Java23种设计模式-创建型模式之建造者模式

ops/2024/9/23 15:22:03/

建造者模式(Builder Pattern),也被称为生成器模式,是一种创建型设计模式,主要用于解决复杂对象的构建问题。建造者模式的主要特点是:
1.分离构建与表示:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
2.封装性:通过将对象的构建过程封装在一个独立的建造者类中,提高了代码的封装性。
3.扩展性:不同的具体建造者可以实现不同的构建步骤,从而创建不同的产品变体,提高了系统的扩展性。
4.控制细节风险:客户端不必知道产品内部组成的细节,便于控制细节风险。

建造者模式的主要构成要素包括:
1.抽象建造者(Builder):定义构建产品步骤和方法,但没有具体的实现。
2.具体建造者(Concrete Builder):实现了抽象建造者定义的方法,完成产品的构建过程,每个具体建造者负责构建特定的产品变体。
3.指挥者(Director):负责控制建造过程,它通过将客户端具体建造者分离确保产品的构建是按照一定顺序和规则进行的。
4.产品(Product):表示正在构建的复杂对象建造者模式的目标是构建这个产品。

示例:定义了一个Computer产品类,一个Builder接口,以及一个具体的LaptopBuilder类实现Builder接口。Director类负责安排构建过程。客户端代码中,我们创建了Director、Builder和Computer的实例,并通过Director来构建一台电脑。最后打印出了电脑的配置信息。

// 产品类
public class Computer {private String cpu;private String sam;private String screen;public void setCpu(String cpu) {this.cpu = cpu;}public void setSam(String sam) {this.sam = sam;}public void setScreen(String screen) {this.screen = screen;}@Overridepublic String toString() {return "Computer{" +"cpu='" + cpu + '\'' +", sam='" + sam + '\'' +", screen='" + screen + '\'' +'}';}
}
// 建造者接口
public interface Builder {void buildCpu();void buildRam();void buildScreen();Computer getComputer();}
// 具体建造者
public class LaptopBuilder implements Builder {private Computer computer=new Computer();@Overridepublic void buildCpu() {computer.setCpu("i7处理器");}@Overridepublic void buildRam() {computer.setSam("16GB内存");}@Overridepublic void buildScreen() {computer.setScreen("32寸屏幕");}@Overridepublic Computer getComputer() {return computer;}
}
//指挥者
public class Director {public void construct(Builder builder){builder.buildCpu();builder.buildRam();builder.buildScreen();}
}//测试
public class BuilderPatternExample {public static void main(String[] args) {//指挥者Director director = new Director();//建造者Builder builder = new LaptopBuilder();//指挥director.construct(builder);//建造Computer computer = builder.getComputer();System.out.println(computer);}
}

http://www.ppmy.cn/ops/23884.html

相关文章

创建Maven项目的时候让选择maven模板

创建Maven项目的时候让选择maven模板 心得 工欲利其事 必先利其器。如果你想要干成一件事 那么必须先要精通对应的工具使用。之前我不太注重工具 我觉得只要代码写的好就可以了 但是当我们了解了产品经理的一些思想之后,我才明白一个好的产品是可以给用户提供多大…

firebase:一款功能强大的Firebase数据库安全漏洞与错误配置检测工具

关于firebase firebase是一款针对Firebase数据库的安全工具,该工具基于Python 3开发,可以帮助广大研究人员针对目标Firebase数据库执行安全漏洞扫描、漏洞测试和错误配置检测等任务。 该工具专为红队研究人员设计,请在获得授权许可后再进行安…

《恶意不息》是一款什么样的游戏,苹果电脑怎么玩《恶意不息》恶意不息游戏内怎么存档 mac电脑玩游戏

近日steam游戏商城新上架了一款名叫《恶意不息》的游戏十分火爆,那么《恶意不息》是一款什么样的游戏,苹果电脑怎么玩《恶意不息》?一起来看看吧! 一、《恶意不息》是一款什么样的游戏? Private Division,…

AIGC:开启内容创作新纪元,我们如何看待它的影响与前景?

AIGC的概念 AIGC(Artificial Intelligence Generated Content)的概念主要是指人工智能生成内容。 这是一种新的人工智能技术,它利用人工智能模型,根据给定的主题、关键词、格式、风格等条件,自动生成各种类型的文本、图…

Swift - 枚举

文章目录 Swift - 枚举1. 枚举的基本用法2. 关联值(Associated Values)3. 关联值举例4. 原始值5. 隐式原始值(Implicitly Assigned Raw Values)6. 递归枚举(Recursive Enumeration)7. MemoryLayout Swift -…

分布式与一致性协议之Raft算法(二)

Raft算法 什么是任期 我们知道,议会选举中的领导者是有任期的,当领导者任命到期后,需要重新再次选举。Raft算法中的领导者也是有任期,每个任期由单调递增的数字(任期编号)标识。比如,节点A的任期编号是1。任期编号会…

【JS】节流与防抖技术

JavaScript: 节流与防抖技术 当用户进行滚动、调整窗口大小或进行频繁的键盘输入时,页面上的某些事件处理器可能会被频繁触发。如果每次事件触发都执行函数,可能会对性能产生显著影响。在这种情况下,我们可以利用节流(Throttle&a…

基于Springboot的滑雪场管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的滑雪场管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&a…