建造者模式

来源:互联网 发布:华为网络助手在哪里 编辑:程序博客网 时间:2024/05/23 00:04

一:  建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  建造者模式通常包括下面几个角色:

1. builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。

2. ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。

3. Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。

4. Product:要创建的复杂对象。

  建造者模式的结构图:

   

二:案例

   public interface Builder { 
    void buildPartA(); 
    void buildPartB(); 
    void buildPartC(); 
  
    Product getResult(); 
  } 


   //具体建造工具
  public class ConcreteBuilder implements Builder { 
    Part partA, partB, partC; 


    public void buildPartA() {
      //这里是具体如何构建partA的代码
    }; 
    public void buildPartB() { 
      //这里是具体如何构建partB的代码
    }; 
     public void buildPartC() { 
      //这里是具体如何构建partB的代码
    }; 
     public Product getResult() { 
      //返回最后组装成品结果
    }; 
  }


   //建造者
  public class Director {
    private Builder builder; 
  
    public Director( Builder builder ) { 
      this.builder = builder; 
    } 
    public void construct() { 
      builder.buildPartA();
      builder.buildPartB();
      builder.buildPartC(); 
    } 
  } 




  public interface Product { }
  public interface Part { }

  下面是调用builder的方法:  ConcreteBuilder builder = new ConcreteBuilder();  Director director = new Director( builder );    director.construct();   Product product = builder.getResult();
   三、使用的场景和好处
   建造者模式的好处: 

1.使用建造者模式可以使客户端不必知道产品内部组成的细节。

2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。

3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

  场景:
     

1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。

2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。


1 0
原创粉丝点击