设计模式之建造者模式
2022/7/21 6:24:40
本文主要是介绍设计模式之建造者模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、建造者模式:如果创建某个对象要经过多个组件组装才能完成,我们可以设计一个充当建造者角色的类和一个充当指挥者的类,通过指挥者控制建造者按步骤组装需要创建的对象,这样客户端就只依赖于指挥者类。
二、实现思路 :设计一个建造者类,其中包含要创建对象的所有组件的创建方法,然后再创建一个指挥者,指挥建造者方法执行对象的创建。
三、代码举例:
抽象类AbstractBuilder:
namespace Builder { public abstract class AbstractBuilder { public abstract void CreateCpu(); public abstract void CreateMainboard(); public abstract void CreateRom(); public abstract void CreateRam(); public abstract void CreateComputer(); } }
实现类AcerBuilder:
namespace Builder { public class AcerBuilder : AbstractBuilder { public override void CreateComputer() { Console.WriteLine("组装成Acer电脑"); } public override void CreateCpu() { Console.WriteLine("创建cpu"); } public override void CreateMainboard() { Console.WriteLine("创建主板"); } public override void CreateRam() { Console.WriteLine("创建Ram内存条"); } public override void CreateRom() { Console.WriteLine("创建Rom硬盘"); } } }
实现类DellBuilder:
namespace Builder { public class DellBuilder : AbstractBuilder { public override void CreateComputer() { Console.WriteLine("组装成Dell电脑"); } public override void CreateCpu() { Console.WriteLine("创建cpu"); } public override void CreateMainboard() { Console.WriteLine("创建主板"); } public override void CreateRam() { Console.WriteLine("创建Ram内存条"); } public override void CreateRom() { Console.WriteLine("创建Rom硬盘"); } } }
指挥者类Director:
namespace Builder { public class Director { public AbstractBuilder builder = null; public Director(AbstractBuilder builder) { this.builder = builder; } public void GetComputer() { Console.WriteLine("正在指挥builder生产电脑..."); this.builder.CreateCpu(); this.builder.CreateMainboard(); this.builder.CreateRam(); this.builder.CreateRom(); Console.WriteLine("builder生产电脑组件完成..."); this.builder.CreateComputer(); Console.WriteLine("电脑组装完成!"); } } }
客户类:
{ //建造者模式中包含2个角色,指挥者和建造者 Builder.AbstractBuilder Acerbuilder = new Builder.AcerBuilder();//充当建造者,建造对象组件 Builder.Director director0 = new Builder.Director(Acerbuilder);//充当指挥者,控制建造者建造过程 director0.GetComputer();//交互产品 Builder.AbstractBuilder Dellbuilder = new Builder.DellBuilder();//充当建造者,建造对象组件 Builder.Director director1 = new Builder.Director(Dellbuilder);//充当指挥者,控制建造者建造过程 director1.GetComputer();//交互产品 }
运行结果:
四、建造者模式的优缺点及应用:它适用于非常复杂的对象的创建,通常这种复杂的对象具有很多创建步骤,建造者模式关注的不是转移细节,而是关注对象的创建步骤,在指挥者类中不应该包含除了控制建造者执行组件创建逻辑以外额其他逻辑。
这篇关于设计模式之建造者模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行