您的位置:首页 > 健康 > 美食 > 上海企业建站公司哪家好_广东天河区疫情最新情况_新网站多久会被百度收录_网站建设的重要性

上海企业建站公司哪家好_广东天河区疫情最新情况_新网站多久会被百度收录_网站建设的重要性

2025/1/8 14:02:35 来源:https://blog.csdn.net/2302_76363587/article/details/144928548  浏览:    关键词:上海企业建站公司哪家好_广东天河区疫情最新情况_新网站多久会被百度收录_网站建设的重要性
上海企业建站公司哪家好_广东天河区疫情最新情况_新网站多久会被百度收录_网站建设的重要性

1.建造者模式概念

  • 建造者模式(builder Pattern)
    • 使用多个简单的对象一步一步构建成一个复杂的对象,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
    • 允许用户只通过制定复杂对象的类型和内容就可以构建它们,不需要知道内部的具体构建细节
  • 核心组成
    • Builder:抽象建造者,定义多个通用方法和构建方法
    • ConcreteBuilder:具体建造者,可以有多个
    • Director:指挥者,控制整个组合过程,将需求交给建造者,由建造者去创建对象
    • Product:产品角色

2.代码编写

  • 代码示例,以组装电脑为例子

    /*** 具体产品*/
    class Computer {private String cpu;private String memory;public String getCpu() {return cpu;}public void setCpu(String cpu) {this.cpu = cpu;}public String getMemory() {return memory;}public void setMemory(String memory) {this.memory = memory;}@Overridepublic String toString() {return "Computer{" +"cpu='" + cpu + '\'' +", memory='" + memory + '\'' +'}';}
    }/*** 声明了建造者的公共方法*/
    interface Builder {void buildCpu();void buildMemory();Computer createComputer();
    }/*** 具体的建造者,实现builder来创建不同的产品* 低配电脑*/
    class LowComputerBuilder implements Builder {private Computer computer = new Computer();@Overridepublic void buildCpu() {computer.setCpu("低配 CPU");}@Overridepublic void buildMemory() {computer.setMemory("低配 内存");}@Overridepublic Computer createComputer() {return computer;}
    }/*** 具体的建造者,实现builder来创建不同的产品* 高配电脑*/
    class HighComputerBuilder implements Builder {private Computer computer = new Computer();@Overridepublic void buildCpu() {computer.setCpu("高配 CPU");}@Overridepublic void buildMemory() {computer.setMemory("高配 内存");}@Overridepublic Computer createComputer() {return computer;}
    }/*** 将产品和创建过程进行解耦,使用相同的创建过程创建不同的产品,控制产品生产过程* Director是全程指导组装过程,具体的细节还是builder去操作*/
    class Director {public Computer build(Builder builder) {builder.buildCpu();builder.buildMemory();return builder.createComputer();}
    }public class Main {public static void main(String[] args) throws CloneNotSupportedException {Director director = new Director();Computer lowComputer = director.build(new LowComputerBuilder());Computer highComputer = director.build(new HighComputerBuilder());System.out.println(lowComputer);System.out.println(highComputer);}
    }
    
  • 优点

    • 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦
    • 每一个具体建造者都相对独立,而与其他的具体建造者无关,更加精细地控制产品的创建过程
    • 增加新的具体建造者无需修改原有类库的代码,符合开闭原则
    • 建造者模式结合链式编程来使用,代码上更加美观
  • 缺点

    • 建造者模式所创建的产品一般具有较多的共同点,如果产品差异大则不建议使用
  • 建造者模式与抽象工厂模式的比较

    • 建造者模式返回一个组装好的完整产品
    • 抽象工厂模式返回一系列相关的产品,这些产品位于不同的产品等级结构,构成了一个产品族

版权声明:

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

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