工廠方法模式

          操作接口:

          package com.jerry.design.factoryMethod.imp;


          /**

           * 

           * @author jerry

           *

           */

          public interface interfaceTest {

          public void test(String name);


          }


          實現(xiàn)類A:

          package com.jerry.design.factoryMethod.impl;


          import com.jerry.design.factoryMethod.imp.interfaceTest;



          /**

           * 

           * @author jerry

           *

           */

          public class ImplA implements interfaceTest {

          public void test(String name){

          System.out.println(" my ImplA name is:"+name);

          }


          }

          實現(xiàn)類B:

          package com.jerry.design.factoryMethod.impl;


          import com.jerry.design.factoryMethod.imp.interfaceTest;



          /**

           * 

           * @author jerry

           *

           */

          public class ImplB implements interfaceTest {

          public void test(String name){

          System.out.println(" my ImplB name is:"+name);

          }


          }


          抽象類:

          package com.jerry.design.factoryMethod.imp;


          public abstract class abstractClass {

          public void test(String name){

          interfaceTest impl = getImpl();

          impl.test(name);

          }


          public  abstract interfaceTest getImpl() ;


          }


          子類A;

          package com.jerry.design.factoryMethod.impl;


          import com.jerry.design.factoryMethod.imp.abstractClass;


          import com.jerry.design.factoryMethod.imp.interfaceTest;


          public class ClassA extends abstractClass {


          @Override

          public interfaceTest getImpl() {

          return new ImplA();

          }


          }


          子類B:

          package com.jerry.design.factoryMethod.impl;

          import com.jerry.design.factoryMethod.imp.abstractClass;

          import com.jerry.design.factoryMethod.imp.interfaceTest;

          public class ClassB extends abstractClass {

          @Override
          public interfaceTest getImpl() {
          return new ImplB();
          }

          }

          測試類:

          package com.jerry.design.factoryMethod.client;


          import com.jerry.design.factoryMethod.imp.abstractClass;

          import com.jerry.design.factoryMethod.impl.ClassA;

          import com.jerry.design.factoryMethod.impl.ClassB;


          public class Test{

          public static void main(String[] args) {

          abstractClass ac = new ClassA();

          ac.test("yushh");

          abstractClass ac2 = new ClassB();

          ac2.test("yushh2");

          // my ImplA name is:yushh

          // my ImplB name is:yushh2

          }

          }


          總結:分離出業(yè)務與創(chuàng)建,延遲實現(xiàn)。

          posted on 2012-02-19 21:53 瘋狂的蝸牛 閱讀(63) 評論(0)  編輯  收藏 所屬分類: 設計模式


          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統(tǒng)計

          公告

          @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 锡林浩特市| 台北市| 亳州市| 葫芦岛市| 中牟县| 高唐县| 奉贤区| 浪卡子县| 全南县| 大理市| 肥乡县| 广东省| 周至县| 天祝| 太谷县| 桐柏县| 中江县| 乐都县| 江源县| 建瓯市| 安吉县| 油尖旺区| 青铜峡市| 尼勒克县| 鞍山市| 三江| 清远市| 繁昌县| 陈巴尔虎旗| 瓦房店市| 罗平县| 巴南区| 临海市| 堆龙德庆县| 政和县| 桂平市| 阿拉善右旗| 建阳市| 临澧县| 塔城市| 左权县|