欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 设计模式 建造者模式

设计模式 建造者模式

2024/10/25 0:23:42 来源:https://blog.csdn.net/ling_zhi_xin/article/details/141291492  浏览:    关键词:设计模式 建造者模式

建造者模式介绍

  • 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式.
    定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。
要解决的问题

建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。

建造者模式原理

建造者(Builder)模式包含以下4个角色 :

  • 抽象建造者类(Builder):这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的部件对象的创建。
  • 具体建造者类(ConcreteBuilder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。在构造过程完成后,提供一个方法,返回创建好的负责产品对象。
  • 产品类(Product):要创建的复杂对象 (包含多个组成部件).
  • 指挥者类(Director):调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建(客户端一般只需要与指挥者进行交互)。
建造者模式的优点包括:
  1. 封装性好:将复杂对象的创建过程封装在独立的建造者类中,使得对象的创建过程更加清晰和易于理解。
  2. 灵活性高:通过使用建造者模式,可以灵活地修改对象的创建过程,而不需要修改对象的具体表示。
  3. 可复用性强:建造者模式将对象的创建过程分解为多个步骤,可以将这些步骤封装在独立的建造者类中,从而提高了代码的可复用性。
建造者模式的缺点包括:
  1. 类的数量增多:由于将对象的创建过程分解为多个步骤,并将这些步骤封装在独立的建造者类中,因此需要创建多个建造者类,从而增加了类的数量。
  2. 建造过程复杂:如果对象的创建过程过于复杂,可能会导致建造者类的建造过程也变得复杂,从而增加了代码的维护难度。
创建继承类
public abstract class AbstractBuider {protected Buider buider = new Buider();public abstract  void setBuider();public abstract void setName();public abstract void setAge();public abstract Buider getBuider();}
继承并分别去实现然后去进行不同的改动

package BuilderModel;public class RealizeBuilder2 extends AbstractBuider{@Overridepublic void setBuider() {this.buider = new Buider();}@Overridepublic void setName() {buider.setName("李四");}@Overridepublic void setAge() {buider.setAge("123111");}@Overridepublic Buider getBuider() {return buider;}
}public class RealizeBuilder1 extends AbstractBuider {@Overridepublic void setBuider() {this.buider = new Buider();}@Overridepublic void setName() {buider.setName("张三");}@Overridepublic void setAge() {buider.setAge("123");}@Overridepublic Buider getBuider() {return buider;}
}public class RealizeBuilder2 extends AbstractBuider{@Overridepublic void setBuider() {this.buider = new Buider();}@Overridepublic void setName() {buider.setName("李四");}@Overridepublic void setAge() {buider.setAge("123111");}@Overridepublic Buider getBuider() {return buider;}
}
封装一个统一调用类去分别实现
public class Director {private  AbstractBuider buider;public Director(AbstractBuider buider) {this.buider = buider;}public Buider construct() {buider.setBuider();buider.setAge();buider.setName();return buider.getBuider();}
}
具体执行
public static void main(String[] args) {Director director = new Director(new RealizeBuilder1());Director director1 = new Director(new RealizeBuilder2());Buider construct = director.construct();Buider construct1 = director1.construct();System.out.println(construct.toString());System.out.println(construct1.toString());
}

建造者模式可以让你以一种灵活的方式创建复杂的对象,同时也使得创建过程易于扩展和维护。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com