• Java设计模式-建造者模式(Builder)


      将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]

         与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。

      建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。

    工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性

    例:

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

    从这点看出,建造者模式将很多功能集成到一个类里,这个类可以创造出比较复杂的东西。所以与工程模式的区别就是:工厂模式关注的是创建单个产品,而建造者模式则关注创建符合对象,多个部分。因此,是选择工厂模式还是建造者模式,依实际情况而定。

    应用场景

    在Java的应用中JavaMail使用到了该模式。

  • 相关阅读:
    为什么我们不要 .NET 程序员
    Jquery异步请求数据实例代码
    关系数据库中表的基本属性有哪些
    利用VC从DLL传递消息到EXE
    新实体与原实体之间为一对多关系
    本人C++ Builder开发的仿Windows桌面应用程序源码
    delphi窗体动态设计 在系统运行时动态更改控件属性
    DB.ASP 用Javascript写ASP很灵活很好用很easy
    CrazyScan Satellite scan software 卫星扫描
    delphi中窗体半透明效果如何实现
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4508468.html
Copyright © 2020-2023  润新知