• java建造者模式


    它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成.

    建造者模式包括的角色:

    (1)Builder:给出一个抽象接口或抽象类,以规范产品的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建,一般由子类具体实现。

    (2)ConcreteBuilder:Builder接口的实现类,并返回组建好对象实例

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

    (4)Product:要创建的复杂对象,产品类。

    建造者模式的使用场景:

    (1)当产品有复杂的内部构造时(参数很多)。

    (2)需要生产的产品的属性相互依赖,这些属性的赋值顺序比较重要时(因为在调用ConcreteBuilder的赋值方法时是有先后顺序的)。

    建造者模式优缺点

    建造者模式的优点:

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

    (2)建造者类逻辑独立,易拓·1`展。

    建造者模式的缺点:

    很明显产生了多余的Build对象以及Dirextor对象,消耗了内存。

    1. 要组装一台电脑(Computer类),我们假设它有三个部件:CPU 、主板以及内存。
    2. 在Computer类中提供三个set方法分别设置这三个属性。
    3. public class Computer {
    4. private String mCpu;
    5. private String mMainboard;
    6. private String mRam;
    7. public void setmCpu(String mCpu) {
    8. this.mCpu = mCpu;
    9. }
    10. public void setmMainboard(String mMainboard) {
    11. this.mMainboard = mMainboard;
    12. }
    13. public void setmRam(String mRam) {
    14. this.mRam = mRam;
    15. }
    16. }
    1. Builder类
    2. 里面提供了安装CPU、主板和内存的抽象方法,以及组装成电脑的create方法
    3. public abstract class Builder {
    4. public abstract void buildCpu(String cpu);
    5. public abstract void buildMainboard(String mainboard);
    6. public abstract void buildRam(String ram);
    7. public abstract Computer create();
    8. }
    1. Builder实现类
    2. 里面不仅新建了Computer的实例,还提供了安装CPU、主板和内存的具体实现方法,并且在组装成电脑的create方法中将该Computer对象实例返回
    3. public class MyComputerBuilder extends Builder {
    4. private Computer mComputer = new Computer();
    5. @Override
    6. public void buildCpu(String cpu) {
    7. mComputer.setmCpu(cpu);
    8. }
    9. @Override
    10. public void buildMainboard(String mainboard) {
    11. mComputer.setmMainboard(mainboard);
    12. }
    13. @Override
    14. public void buildRam(String ram) {
    15. mComputer.setmRam(ram);
    16. }
    17. @Override
    18. public Computer create() {
    19. return mComputer;
    20. }
    21. }
    1. 指挥者(Director)类用来规范组装电脑的流程顺序,先安装主板,再安装CPU,最后安装内存并组装成电脑。
    2. public class Direcror {
    3. Builder mBuild=null;
    4. public Direcror(Builder build){
    5. this.mBuild=build;
    6. }
    7. public Computer CreateComputer(String cpu,String mainboard,String ram){
    8. //规范建造流程,这个顺序是由它定的
    9. this.mBuild.buildMainboard(mainboard);
    10. this.mBuild.buildCpu(cpu);
    11. this.mBuild.buildRam(ram);
    12. return mBuild.create();
    13. }
    14. }
    1. Builder mBuilder = new MyComputerBuilder();
    2. Direcror mDirecror=new Direcror(mBuilder);
    3. mDirecror.CreateComputer("i7","Intel主板","mRam");//返回Computer实例对象

  • 相关阅读:
    JAVA主要API
    C语言的goto err
    零基础带你基于vue2架构搭建qiankun父子项目微前端架构
    java-php-net-python-东软健身会员网站计算机毕业设计程序
    FFmpeg开发简介1
    网络连接删除了怎么弄好
    Ubuntu Linux 23.10安装manimgl
    3D模型格式转换工具HOOPS Exchange助力SIMCON搭建注塑项目
    nodejs+vue+elementui高校体育馆场地预订系统
    前端调试只会console.log()?
  • 原文地址:https://blog.csdn.net/weixin_47796247/article/details/127891597