工廠方法模式

          操作接口:

          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 瘋狂的蝸牛 閱讀(63) 評論(0)  編輯  收藏 所屬分類: 設計模式


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


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

          導航

          統計

          公告

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

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 昌黎县| 康马县| 常德市| 新巴尔虎左旗| 黄冈市| 泰兴市| 长海县| 揭阳市| 兴义市| 横峰县| 平阴县| 无棣县| 靖边县| 宜兰县| 达拉特旗| 龙州县| 鲜城| 宣武区| 洛浦县| 府谷县| 东明县| 朝阳市| 富阳市| 鸡泽县| 大冶市| 绍兴市| 盐亭县| 蛟河市| 潞西市| 利川市| 辽源市| 监利县| 新河县| 色达县| 石河子市| 蓬莱市| 张家界市| 滦平县| 鄂伦春自治旗| 湘西| 中西区|