设计模式(7)- 生成器模式

生成器模式

1.定义

       将复杂对象的构件和它的表示分离,使得同样的构建过程可以创建不同的表示。

2.示例代码

       要实现同样的构建过程可以创建不同的表现,那么一个自然的思路就是先把构建过程独立出来,在生成器模式中把它称为指导者,由它来指导装配过程,但是不负责每步具体实现,具体实现每步的对象,在生成器模式中称为生成器。

   

/*被构件的产品对象接口*/
public interface Product{
    //产品对象的一些操作
    public String getProductName();
}

/*产品对象鞋子*/
public class Shoes implements Product{
    //产品对象的一些操作
    public String getProductName(){
       System.out.println("产品:" + "Shoes");
    }
}
/*产品对象衣服*/
public class Clothes implements Product{
    //产品对象的一些操作
    public String getProductName(){
       System.out.println("产品:" + "Clothes");
    }
}

   

/*生成器接口,定义创建Product对象所需的各个部件的操作方法*/
public interface Bulider{
   //示意方法,构件某个部件
   public void buildPart();
}

/*鞋子具体生成器实现对象*/
public class ShoesBuilder implements Bulider{
    //生成器最终构建的产品对象
    private Product resultProduct;
    //获取生成器最终构建的产品对象
    public Product getResult(){
        return resultProduct;
    }
    //构建具体产品的详细步骤
    public void buildPart(){
        //构建某个部件的功能处理
        resultProduct = new Shoes();
    }
}

/*衣服具体生成器实现对象*/
public class ChothesBuilder implements Bulider{
    //生成器最终构建的产品对象
    private Product resultProduct;
    //获取生成器最终构建的产品对象
    public Product getResult(){
        return resultProduct;
    }
    //构建具体产品的详细步骤
    public void buildPart(){
        //构建某个部件的功能处理
        resultProduct = new Chothes();
    }
}

   

/*指导者使用生成器接口来构建产品对象*/
public class Director{
   //持有当前生成器对象
   private Builder builder;
   //构造方法传入生成器对象
   public Director(Builder builder){
       this.builder = builder;
   }
   //指导生成器构建最终的产品对象
   public void construct(){
       builder.buildPart();
   }
}

   

/*客户调用生成器生成不同的产品*/
public class Client{
    public static void main(String args[]){
        //创建要生产的产品生成器
        Builder builder = new ShoesBuilder();
        //创建指导对象
        Director director = new Director(builder);
        //生产产品
        director.construct();
        builder.getResult().getProductName();
    }
}

    3.实际应用

       生成器模式主要功能是构建复杂产品,而且是细化的,分步骤的构建产品,更为重要的是,这个构建的过程是统一的,固定不变的,变化的部分放到生成器里边,只需要配置不同的生成器,那么同样的构建过程就能构建出不同的产品。

生成器模式的本质:分离整体构建算法和部件构造

猜你喜欢

转载自renhanxiang.iteye.com/blog/2406918