Swing


          天行健 君子以自強(qiáng)不息

          posts - 69, comments - 215, trackbacks - 0, articles - 16
             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          Factory有兩種理解方式,個(gè)人感覺(jué)不太一樣,不知道哪種理解方式比較正確
          1、引入Factory  Pattern的目的是為了封裝類(lèi)的實(shí)例化操作

          public class Factory{

            public static Sample creator(int which){
                   
          //getClass 產(chǎn)生Sample 一般可使用動(dòng)態(tài)類(lèi)裝載裝入類(lèi)。
            if (which==1)
              return new SampleA();
            else if (which==2)
              return new SampleB();

            }

          }

          那么在你的程序中,如果要實(shí)例化Sample時(shí).就使用

          Sample sampleA=Factory.creator(1);

          這樣,在整個(gè)就不涉及到Sample的具體子類(lèi),達(dá)到封裝效果,也就減少錯(cuò)誤修改的機(jī)會(huì),這個(gè)原理可以用很通俗的話(huà)來(lái)比喻:就是具體事情做得越多,越容易范錯(cuò)誤

          2、Factory Pattern在父類(lèi)規(guī)定對(duì)象的創(chuàng)建方法,但不深入到具體的類(lèi)名,所有具體的實(shí)現(xiàn)都放在了子類(lèi),大致可以分為產(chǎn)生對(duì)象實(shí)例的大綱(框架)和實(shí)際產(chǎn)生對(duì)象實(shí)例的類(lèi)兩方面

          實(shí)例:

          framework中的Factory是實(shí)現(xiàn)creat的抽象類(lèi)
           public final Product creat(String owner) {
            Product p = creadProduct(owner);
            registerProduct(p);
            return p;
           }

           public abstract Product creadProduct(String owner);
          famework中的Product是僅實(shí)現(xiàn)use方法的抽象類(lèi)

          具體的生成和使用方法都用idcard中的類(lèi)具體實(shí)現(xiàn)
           IDcardFactory:
           IDcardFactory extends Factory 
           public synchronized Product creadProduct(String owner) {
            IDcard ic = new IDcard(owner);
            return ic;
           }

          IDcarrd:
          class IDcard extends Product
          IDcard(String owner) {
            System.out.println("建立" + owner +"的卡");
            this.owner = owner;
           }
          此處構(gòu)造函數(shù)不是public 只有通過(guò)同一個(gè)包中的factory才可以產(chǎn)生這個(gè)對(duì)象實(shí)例

           public void use() {
            System.out.println("使用"  + owner + "的卡");
           }

          具體使用:
           public static void main(String[] args) {
            Factory fc = new IDcardFactory();
            Product p1 = fc.creat("card1");
            Product p2 = fc.creat("card2");
            Product p3 = fc.creat("card3");
            p1.use();
            p2.use();
            p3.use();
           }
          這樣不必修改framework包中的內(nèi)容就能夠創(chuàng)建出不同的產(chǎn)品和工廠

          主站蜘蛛池模板: 亚东县| 大安市| 湘阴县| 潢川县| 宁陕县| 威海市| 广河县| 大新县| 通州市| 绿春县| 绩溪县| 张家川| 思茅市| 布尔津县| 安平县| 团风县| 馆陶县| 那坡县| 观塘区| 抚宁县| 鄂州市| 平昌县| 华阴市| 乌苏市| 久治县| 山阳县| 嵩明县| 蕉岭县| 隆回县| 通海县| 新邵县| 兴安盟| 龙里县| 涟水县| 花莲县| 枞阳县| 仁怀市| 新疆| 潞西市| 克山县| 宁晋县|