java设计模式之建造者模式

xiaoxiao2025-08-01  10

作用:

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

关键点:

Product(具体产品):表示被构造的复杂对象。

package com.lpw.creator; // 产品 public class Computer { private String zhuBan; private String yingPan; private String cpu; public Computer() { super(); // TODO Auto-generated constructor stub } public Computer(String zhuBan, String yingPan, String cpu) { super(); this.zhuBan = zhuBan; this.yingPan = yingPan; this.cpu = cpu; } public String getZhuBan() { return zhuBan; } public void setZhuBan(String zhuBan) { this.zhuBan = zhuBan; } public String getYingPan() { return yingPan; } public void setYingPan(String yingPan) { this.yingPan = yingPan; } public String getCpu() { return cpu; } public void setCpu(String cpu) { this.cpu = cpu; } }

builder(抽象构建产品):为创建一个产品对象的各个部门指定抽象接口。

package com.lpw.creator; // 抽象构建产品 public interface Builder { public void buiidZhuBan(); public void buildYingPan(); public void buildCpu(); public Computer buildComputer(); }

builderimpl (抽象构建具体表现):实现builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示

package com.lpw.creator; // 抽象构建的具体实现 public class BuildCompter implements Builder{ private Computer computer = new Computer(); @Override public void buiidZhuBan() { // TODO Auto-generated method stub computer.setZhuBan("华硕"); } @Override public void buildYingPan() { // TODO Auto-generated method stub computer.setYingPan("希捷"); } @Override public void buildCpu() { // TODO Auto-generated method stub computer.setCpu("intel i5"); } @Override public Computer buildComputer() { // TODO Auto-generated method stub return computer; } }

director(建造者):构造一个使用builder接口的对象。

package com.lpw.creator; // 建造者 public class Director { // 传入的参数一定要是父类 public static Computer ConstructorCom(Builder bc) { bc.buiidZhuBan(); bc.buildYingPan(); bc.buildCpu(); return bc.buildComputer(); } }

分析:

1.优点:

易于解耦:将产品本身于产品创建过程进行解耦,可以使用相同的创建过程来得到不同的产品,也就是说希捷一来抽象。

易于精确控制对象的创建:将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰。

易于拓展:

2.缺点:

1.建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;

2.如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定限制。

如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。

应用场景:

需要生成的产品对象有复杂的内部结构,这些产品对象具备共性;

隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品;

转载请注明原文地址: https://www.6miu.com/read-5034101.html

最新回复(0)