亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java中單態(tài)設計模式的教學過程設計

        2008-12-31 00:00:00趙會洋
        計算機教育 2008年14期

        摘要:單態(tài)設計模式在Java課程中很少涉及,本文講述了怎樣將此內容巧妙地引入到課堂中去,并通過教學過程的合理設計,使得學生不但能夠輕松掌握此內容,還可以深入理解其它的相關內容。

        關鍵詞:單態(tài)設計模式;Java;教學

        中圖分類號:G642文獻標識碼:A

        1引言

        設計模式是在大量的實踐中總結和理論化之后優(yōu)選的代碼結構、編程風格以及解決問題的思考方式。要成為一名優(yōu)秀的Java程序員,一般都需要掌握Java中的幾種設計模式,單態(tài)設計模式就是其中之一。但能否把此作為Java程序設計這門課的教學內容的一部分,仍是一個值得商榷的問題。因為在眾多學者看來,此內容復雜而難懂,因此在目前的教材中,尚未發(fā)現涉及此內容的。本文作者在教學中引入了單態(tài)設計模式的教學內容,結果證明只要對此內容的教學過程進行合理設計,學生不但可以掌握它,還可以深入理解掌握其它幾方面的知識。

        2單態(tài)設計模式的含義及作用

        所謂類的單態(tài)設計模式,就是采取一定的方法保證在整個的軟件系統(tǒng)中,對某個類只能存在一個對象實例,并且其它類可以通過某種方法訪問該實例。其主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。生活中很多方面我們都要用到此設計模式,例如建立目錄、數據庫連接、資源管理器等。

        3單態(tài)設計模式的教學過程設計

        3.1單態(tài)設計模式的提出

        在教學中我們沒有直接講解怎么設計單態(tài)程序,而是采取循序漸進的方法,不但讓學生輕松掌握該知識,還對Java面向對象的特性有更深的認識。因此我們設計了如下的例1。

        例1:

        class Singleton

        {

        private int value; //注釋1

        public Singleton() //注釋2

        {

        System.out.println(\"正在執(zhí)行構造器....\");

        }

        //注釋3

        public int getValue()

        {

        return value;

        }

        public void setValue(int value)

        {

        this.value = value;

        }

        }

        class TestSingleton

        {

        public static void main(String args[])

        {int v1,v2;

        Singleton t1=new Singleton();

        Singleton t2=new Singleton();

        t1.setValue(3);

        t2.setValue(5);

        v1=t1.getValue();

        v2=t2.getValue();

        System.out.println(\"對象1的值為:\"+v1+\"\對象2的值為:\"+v2);

        }

        }

        通過此例可以讓學生了解我們在設計一個類時,往往把其成員屬性設置成private訪問權限,使得其它類不能直接訪問該成員屬性,同時對外提供修改成員屬性的方法setXXX和讀取成員的方法getXXX,這些方法的訪問權限是public的,可被所有其它類訪問。這樣做的目的是我們可以在修改成員的方法中加入更具體的更合理的控制邏輯,例如我們可以在修改人的年齡的方法setAge中限定只能將年齡設置為0到150之間的數,否則不允許修改。

        讓學生掌握以上知識后,教師可提出在上例中創(chuàng)建了類Singleton的兩個實例,運行結果如圖1所示。我們也可以創(chuàng)建更多該類的實例,但某些情況下若只能產生某個類的一個實例,那么能否做到呢?在提出該問題后,可列舉生活中的例子,說明思考此問題的必要性,進而提出單態(tài)設計模式的概念。接下來就引導學生對上面的程序進行改進,來設計理解單態(tài)設計模式。

        3.2單態(tài)設計模式的設計

        產生某類的實例時需要調用該類的構造方法,若該構造方法可以被其他類直接訪問,就不能限制在其他類中只產生一個實例。因此,我們首先必須將類的構造方法的訪問權限設置為private,這樣,此構造方法就只能在本類中使用來創(chuàng)建對象,而不能用new 操作符在類的外部產生類的對象了,但在類內部仍可以產生該類的對象。因此,應將例1中的注釋2所在的行修改為private Singleton();,同時在注釋1所在的行創(chuàng)建一個對象,即private static Singleton instance=new Singleton();。

        經過以上的改進,在類的外部無法創(chuàng)建Singleton類的對象,但也無法得到類的對象。因此,我們需要在Singleton類的內部對外提供一個可以訪問到對象的方法,并且該方法還必須是靜態(tài)的,因為調用該方法時外部類中還沒有對象,只能通過類名來訪問。又因為靜態(tài)方法不能直接訪問類中的非靜態(tài)成員變量,所以,該類內部產生的那個對象變量也必須定義成靜態(tài)的。由此,我們需要在例1中注釋3所在的位置加入下面的方法:

        public static Singleton getInstance()

        {

        return instance;

        }

        3.3單態(tài)設計模式的測試

        對例1經過以上的改進后,類Singleton是否就只能產生一個實例呢?我們設計了如下的例2對其進行測試。

        例2:

        class TestSingleton

        {

        public static void main(String args[])

        {int v1,v2;

        Singleton t1=Singleton.getInstance();

        Singleton t2=Singleton.getInstance();

        if(t1==t2) System.out.println(\"只能創(chuàng)建一個實例\"); //注釋4

        t1.setValue(3);

        t2.setValue(5);

        v1=t1.getValue();

        v2=t2.getValue();

        System.out.println(\"對象1的值為:\"+v1+\"\對象2的值為:\"+v2); //注釋5

        }

        }

        在此測試程序中,雖然聲明了兩個Singleton類的對象名t1和t2,并通過類Singleton的getInstance()方法得到了該類的實例,但實際上無論在外部類中調用幾次getInstance()方法,訪問到的都是同一個對象。為了證明此結論,在測試程序例2中我們設計了兩個測試方法。第一個測試方法是在注釋4所在的行,我們對t1和t2進行是否相等的比較,若相等則輸出“只能創(chuàng)建一個實例”這個字符串。大家都知道“==”運算符比較的是兩個對象名的引用值是否相等,若相等說明這兩個對象名指向的是同一個對象。第二個測試方法是在注釋5所在的行,分別輸出對象t1、t2的value成員的值。若二者相等并且都是5,則說明t1和t2指向的是同一個對象,若v1的值為3,v2的值為5,則說明t1和t2指向的是不同的實例對象。測試程序的運行結果如圖2所示,驗證了t1和t2是同一個對象,即對例1經過改進后的程序是一個單態(tài)程序,外部類只能獲得Singleton類的一個實例。

        4結束語

        筆者將上述設計過程應用于兩屆學生,均取得了良好的效果。實踐證明,單態(tài)設計模式雖然難懂,但只要教師對其教學過程進行合理設計,學生不但能夠掌握該知識,還可以從中加深對其他知識的理解。本文語言通俗,教學過程設計巧妙,可以為自學單態(tài)設計模式的學生提供良好的幫助,也可以為教師教學提供借鑒。

        The Teaching Process Design of Singleton Design Pattern

        WANG Shuang, ZHAO Hui-yang

        (College of Computer Science and Technology, Xuchang University, Xuchang 461000, China)

        Abstract: Singleton design pattern is very little involved in the Java cource. This paper tells us how to introduce it into classroom teaching ingeniously. And student can not only grasp this content easily but also understand other related contents deeply by teachers’ designing teaching process reasonably.

        Keywords: Singleton Design Pattern, Java, teaching

        參考文獻:

        [1] 耿祥義,張躍平. Java 2實用教程(第3版)[M]. 北京:清華大學出版社,2006.

        [2] 朱喜福. Java程序設計(第2版)[M]. 北京:人民郵電出版社,2007.

        亚洲线精品一区二区三区八戒| 疯狂做受xxxx国产| 亚洲а∨精品天堂在线| 欧美另类在线视频| 国产一区二区三区观看视频| 中文字幕一区二区三区乱码人妻 | 天天做天天爱夜夜夜爽毛片 | 美女扒开腿露内裤免费看| 久久久国产打桩机| 亚洲国产成人精品女人久久久| 亚洲色图在线视频免费观看| 自拍成人免费在线视频| 性做久久久久久久| 男人无码视频在线观看| 中文乱码字幕在线中文乱码 | 亚洲一区二区三区中文字幕网| 色噜噜狠狠综曰曰曰| 亚洲精品国产综合一线久久| 国产美女久久久亚洲综合| 亚洲综合偷自成人网第页色| 九九热线有精品视频86| 国产成人精品自在线无码| 尤物成av人片在线观看| 曰批免费视频播放免费| 亚洲av综合av国产av| 午夜精品久视频在线观看| 亚洲男人的天堂av一区| 99精品国产丝袜在线拍国语| 91尤物视频在线观看| 亚洲精品一区二区三区蜜臀| 精品国产sm最大网站| 午夜亚洲www湿好爽| 国内视频一区| 日韩av天堂一区二区| 粗大猛烈进出高潮视频| 中文亚洲爆乳av无码专区| 免费蜜桃视频在线观看| 无码小电影在线观看网站免费| 曰韩亚洲av人人夜夜澡人人爽| 亚洲人成7777影视在线观看| 91精品国产综合久久久蜜臀九色|