读书人

修筑者模式(生成器模式)

发布时间: 2012-06-30 17:20:12 作者: rapoo

建造者模式(生成器模式)

1.将复杂的对象的构建与其表示分离,使同样的构建过程可以有不同的表示

代码如下

//父类抽象,采用模板方法模式,定义一系列算法,抽象,定义一模板,由sequence 动态决定算法是否执行//子类将继承该类并实现3个算法abstract class design_mode_Builder_Pattern_Model{private ArrayList<String> sequence = new ArrayList<String>();protected abstract void design_mode_Builder_Pattern_Model_MethodA();protected abstract void design_mode_Builder_Pattern_Model_MethodB();protected abstract void design_mode_Builder_Pattern_Model_MethodC();         final public void setSequence(ArrayList<String> sequence){               this.sequence = sequence;}        //定义的模板方法final public void design_mode_Builder_Pattern_Model_Method_transfer (){for(int i=0;i<this.sequence.size();i++){String actionName = this.sequence.get(i);                    if (actionName == "MethodA" ){this.design_mode_Builder_Pattern_Model_MethodA();}else if (actionName == "MethodB" ){this.design_mode_Builder_Pattern_Model_MethodB();}   else if (actionName == "MethodC" ){this.design_mode_Builder_Pattern_Model_MethodC();}else    {System.out.println("wrong method");}}}}    // 子类1class design_mode_Builder_Pattern_Model_class_1 extends design_mode_Builder_Pattern_Model{protected  void design_mode_Builder_Pattern_Model_MethodA(){System.out.println("design_mode_Builder_Pattern_Model_class_1  design_mode_Builder_Pattern_Model_MethodA");}protected  void design_mode_Builder_Pattern_Model_MethodB(){             System.out.println("design_mode_Builder_Pattern_Model_class_1 design_mode_Builder_Pattern_Model_MethodB");}protected  void design_mode_Builder_Pattern_Model_MethodC(){              System.out.println("design_mode_Builder_Pattern_Model_class_1 design_mode_Builder_Pattern_Model_MethodC");}}      // 子类2class design_mode_Builder_Pattern_Model_class_2 extends design_mode_Builder_Pattern_Model{protected  void design_mode_Builder_Pattern_Model_MethodA(){System.out.println("design_mode_Builder_Pattern_Model_class_2 design_mode_Builder_Pattern_Model_MethodA");}protected  void design_mode_Builder_Pattern_Model_MethodB(){             System.out.println("design_mode_Builder_Pattern_Model_class_2 design_mode_Builder_Pattern_Model_MethodB");}protected  void design_mode_Builder_Pattern_Model_MethodC(){              System.out.println("design_mode_Builder_Pattern_Model_class_2 design_mode_Builder_Pattern_Model_MethodC");}}      // 建立抽象建造者类,定义抽象方法执行顺序并返回子类abstract class design_mode_Builder_Pattern_Model_Builder{public abstract void setSequence(ArrayList<String> sequence);public abstract design_mode_Builder_Pattern_Model getdesign_mode_Builder_Pattern_Model();}             // 建造者1class design_mode_Builder_Pattern_Model_class_1_Builder extends design_mode_Builder_Pattern_Model_Builder{private design_mode_Builder_Pattern_Model_class_1 getdesign_mode_Builder_Pattern_Model_1 =  new design_mode_Builder_Pattern_Model_class_1();//getdesign_mode_Builder_Pattern_Model_1 =public  design_mode_Builder_Pattern_Model getdesign_mode_Builder_Pattern_Model(){              return this.getdesign_mode_Builder_Pattern_Model_1;}public void setSequence(ArrayList<String> sequence){this.getdesign_mode_Builder_Pattern_Model_1.setSequence(sequence);}}        // 建造者2class design_mode_Builder_Pattern_Model_class_2_Builder extends design_mode_Builder_Pattern_Model_Builder{private design_mode_Builder_Pattern_Model_class_2 getdesign_mode_Builder_Pattern_Model_2 =  new design_mode_Builder_Pattern_Model_class_2();public  design_mode_Builder_Pattern_Model getdesign_mode_Builder_Pattern_Model(){              return this.getdesign_mode_Builder_Pattern_Model_2;}public void setSequence(ArrayList<String> sequence){this.getdesign_mode_Builder_Pattern_Model_2.setSequence(sequence);}}      // 导演类,定义各模型的内部实现等class design_mode_Builder_Pattern_Model_director{private ArrayList<String> sequence = new ArrayList();private  design_mode_Builder_Pattern_Model_class_1_Builder model1 = new design_mode_Builder_Pattern_Model_class_1_Builder();private  design_mode_Builder_Pattern_Model_class_2_Builder model2 = new design_mode_Builder_Pattern_Model_class_2_Builder();// 构造模型1public design_mode_Builder_Pattern_Model_class_1 getModel1(){this.sequence.clear();this.sequence.add("MethodA");this.sequence.add("MethodB");this.sequence.add("MethodC");this.model1.setSequence(sequence);return (design_mode_Builder_Pattern_Model_class_1)model1.getdesign_mode_Builder_Pattern_Model();}// 构造模型2public design_mode_Builder_Pattern_Model_class_1 getModel1_1(){this.sequence.clear();this.sequence.add("MethodA");this.sequence.add("MethodC");this.model1.setSequence(sequence);return (design_mode_Builder_Pattern_Model_class_1)model1.getdesign_mode_Builder_Pattern_Model();}       // 构造模型3public design_mode_Builder_Pattern_Model_class_2 getModel2_1(){this.sequence.clear();this.sequence.add("MethodA");this.sequence.add("MethodC");this.sequence.add("MethodA");this.model2.setSequence(sequence);return (design_mode_Builder_Pattern_Model_class_2)model2.getdesign_mode_Builder_Pattern_Model();}        // 构造模型4public design_mode_Builder_Pattern_Model_class_2 getModel2_2(){this.sequence.clear();this.sequence.add("MethodA");this.sequence.add("MethodC");this.model2.setSequence(sequence);return (design_mode_Builder_Pattern_Model_class_2)model2.getdesign_mode_Builder_Pattern_Model();}}      // 测试类class design_mode_Builder_Pattern_Model_Client{public void design_mode_Builder_Pattern_Model_Client_Test(){design_mode_Builder_Pattern_Model_director director = new design_mode_Builder_Pattern_Model_director();            // 第1个构造             for (int i=0;i<5 ;i++ )             { director.getModel1().design_mode_Builder_Pattern_Model_Method_transfer();             } // 第2个构造             for (int i=0;i<5 ;i++ )             { director.getModel1_1().design_mode_Builder_Pattern_Model_Method_transfer();             } // 第3个构造             for (int i=0;i<5 ;i++ )             { director.getModel2_1().design_mode_Builder_Pattern_Model_Method_transfer();             }  // 第4个构造             for (int i=0;i<5 ;i++ )             { director.getModel2_2().design_mode_Builder_Pattern_Model_Method_transfer();             }}}

?

读书人网 >软件开发

热点推荐