工廠方法模式

          操作接口:

          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);

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 贵南县| 弥渡县| 景洪市| 无极县| 洪洞县| 宁晋县| 夏邑县| 乌拉特中旗| 和平区| 阳朔县| 青河县| 淮南市| 越西县| 泸定县| 大荔县| 涿鹿县| 金平| 库伦旗| 鄂尔多斯市| 万年县| 北流市| 茌平县| 西华县| 汝南县| 阿城市| 和田市| 宁阳县| 石河子市| 许昌市| 原平市| 连州市| 万安县| 尉氏县| 山阳县| 读书| 分宜县| 新田县| 兴安县| 仁怀市| 华宁县| 广安市|