工廠方法模式

          操作接口:

          package com.jerry.design.factoryMethod.imp;


          /**

           * 

           * @author jerry

           *

           */

          public interface interfaceTest {

          public void test(String name);


          }


          實現類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);

          }


          }

          實現類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

          }

          }


          總結:分離出業務與創建,延遲實現。

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


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


          網站導航:
           
          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          公告

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

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 昭觉县| 曲水县| 嘉峪关市| 黄山市| 昌邑市| 和硕县| 镇巴县| 徐水县| 滕州市| 富顺县| 白水县| 南涧| 建平县| 南康市| 政和县| 腾冲县| 冕宁县| 云南省| 兴业县| 凤凰县| 宝山区| 无极县| 白水县| 灵山县| 青浦区| 镇坪县| 崇义县| 无极县| 五莲县| 门源| 梓潼县| 宜兰县| 五家渠市| 宜丰县| 余庆县| 务川| 即墨市| 蕲春县| 贡山| 偏关县| 禹州市|