菜鸟硕枫设计模式系列之6 建造者模式
发布日期:2021-10-01 08:45:06
浏览次数:2
分类:技术文章
本文共 2246 字,大约阅读时间需要 7 分钟。
建造者模式是设计模式中另一个重要的创建对象的方法模式。它的特点主要是稳定了创建的过程,比如下面的例子中就是每个产品的创建过程都包括创建A部分和创建B部分,但不同的builder可以有自己的方式去创建产品,比如不同的房地产商可以建不同的房子【大房子、小房子】,只要建造过程稳定一致就可以了。 建造者模式类图: [img]http://dl.iteye.com/upload/attachment/364530/f8ab4e69-9028-3e38-9741-bf9cf2a1622e.jpg[/img] 建造者接口:package builderPattern; public interface Builder { Product getProduct(); Object buildProductPartA(); Object buildProductPartB(); }具体建造者:
public class ConcreteBuilder1 implements Builder{ public Object buildProductPartA() { System.out.println("build Big ProductPartA with tools ."); Object object = new Object(); return object; } public Object buildProductPartB() { System.out.println("build Big ProductPartB with tools ."); Object object = new Object(); return object; } public Product getProduct() { // TODO Auto-generated method stub return new Product(buildProductPartA(),buildProductPartB()); } }
package builderPattern; public class ConcreteBuilder2 implements Builder{ public Object buildProductPartA() { System.out.println("build Small ProductPartA with tools ."); Object object = new Object(); return object; } public Object buildProductPartB() { System.out.println("build Small ProductPartB with tools ."); Object object = new Object(); return object; } public Product getProduct() { // TODO Auto-generated method stub return new Product(buildProductPartA(),buildProductPartB()); } }具体产品:
package builderPattern; public class Product { private Object partA; private Object partB; public Product(Object partA,Object partB){ this.partA = partA; this.partB = partB; } }指挥者:
package builderPattern; public class Director { private Builder builder; public Director(Builder builder){ this.builder = builder; } public Product getProduct(){ return builder.getProduct(); } }测试类:
package builderPattern; public class BuilderTest { public static void main(String[] args){ Builder builder = new ConcreteBuilder1(); Director director = new Director(builder); director.getProduct(); System.out.println("建造另外一件产品"); director = new Director(builder); Builder builder2 = new ConcreteBuilder2(); director.getProduct(); } }说明:说明:产品这块当然也可以通过抽象出一个抽象类或接口了,只要这一类产品创建过程一样,都可以通过建造者模式去创建。
转载地址:https://blog.csdn.net/iteye_2655/article/details/81970361 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年03月28日 05时25分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
BiliBili 100+国际名校免费公开课整理分享
2019-04-27
清华大学计算机学科推荐学术会议和期刊列表
2019-04-27
【组队学习】【24期】Docker教程
2019-04-27
Datawhale组队学习周报(第010周)
2019-04-27
【直播】杨毅远:集成学习答疑直播之六 -- 幸福感预测案例实战
2019-04-27
如何使用Python的进度条?
2019-04-27
如何利用情感词典做中文文本的情感分析?
2019-04-27
【青少年编程】【Scratch】06 侦测模块
2019-04-27
【直播】李祖贤:集成学习答疑直播之八-- 集成知识点回顾与补充
2019-04-27
Datawhale组队学习周报(第013周)
2019-04-27
如何设置matplotlib中x,y坐标轴的位置?
2019-04-27
【第15周复盘】B站是个学习的网站
2019-04-27
黄家懿:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
2019-04-27
如何利用pyecharts绘制酷炫的桑基图?
2019-04-27
王朝阳:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
2019-04-27
Scratch等级考试(二级)模拟题
2019-04-27
如何在Jupyter Lab中显示pyecharts的图形?
2019-04-27
什么是Python之禅?
2019-04-27
【青少年编程】【Scratch】01 运动模块
2019-04-27
json的序列化与反序列化
2019-04-27