java设计模式--Builder设计模式
发布日期:2021-07-19 01:25:47
浏览次数:2
分类:技术文章
本文共 1786 字,大约阅读时间需要 5 分钟。
在学习Builder设计模式的时候 ,发现 这个Builder 和 工厂设计模式十分相似 ,我甚至说不出来他们之间有着什么样的区别,但可以肯定的是 ,如果我们需要产生一个复杂的对象,这个对象中包含多个其他的对象,以及属性等 。
那么我们应该使用Builder 模式 ,Builder模式减少了 对象部件之间的耦合度 ,所谓的耦合度 也就是对象部件之间的联系 。
其实说的再多也不如自己认真的分析一段代码 并且自己着手实现一个Builder原型 。
下面一段代码实现的功能 是产生一个 MyProduct 对象 这MyProduct对象中包含了 PartA PartB PartC三个对象 ,我们不是像以往的一样,将所有操作在 MyProduct 完成 。
看下面操作吧 可能比我说的更好理解: 下面是结构
class MyProduct //我们的产品类 包含三个部件 。 PartA PartB PartC
{ private PartA a ; private PartB b ; private PartC c ; MyProduct(PartA a,PartB b ,PartC c) { this.a=a; this.b=b; this.c=c; } public void showPart() { System.out.println(a.getClass().getName()); System.out.println(b.getClass().getName()); System.out.println(c.getClass().getName()); } } class PartA{} class PartB{} class PartC{} interface Builder //Builder接口 { public void buildPartA() ; public void buildPartB() ; public void buildPartC() ; public MyProduct getResult(); //返回产品 }class MyBuilderTest implements Builder
{ private PartA a =null; private PartB b =null; private PartC c =null; @Override public void buildPartA() { if(a==null) this.a= new PartA() ; else return ; } @Override public void buildPartB() { if(b==null) this.b= new PartB() ; else return ; } @Override public void buildPartC() { if(c==null) this.c= new PartC() ; else return ; } @Override public MyProduct getResult() { return new MyProduct(a,b,c); } } class Director //一个代理 {private MyBuilderTest t ;
Director(MyBuilderTest t) { this.t=t ; } public void build() { t.buildPartA() ; t.buildPartB() ; t.buildPartC() ; } } class MyBuilder { public static void main(String []agrs) { MyBuilderTest test =new MyBuilderTest(); // 我们的构建器 Director d=new Director(test) ; //Director类 d.build() ; //通过Director构建 MyProduct product=(MyProduct)test.getResult() ; //调用Builer的 getResult返回结果 product.showPart() ; //产品的方法 } }转载地址:https://blog.csdn.net/iteye_6481/article/details/82309029 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年03月16日 15时54分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
c语言中malloc数组,如何在C中对malloc()数组进行一行赋值?
2021-06-24
c语言调存储过程,写留言板–调用存储过程出问题
2021-06-24
c语言编程max,C语言编程题及答案.doc
2021-06-24
android增删改查布局,Android之父_增删改查
2021-06-24
html获取文件路径_HTML 文件路径
2021-06-24
mysql in 有序_mysql中的in排序 mysql按in中顺序来排序
2021-06-24
mysql 行转列 显示_mysql 行转列 (结果集以坐标显示)
2021-06-24
mysql 查询姓王_MySQL查询语句练习题,测试足够用了
2021-06-24
mysql多实例脚本_mysql多实例脚本
2021-06-24
python如何生成excel文件夹_用python脚本通过excel生成文件夹树结构
2021-06-24
mysql加密复制_MySQL主从复制使用SSL加密
2021-06-24
python启动远端 exe_python打包exe开机自动启动的实例(windows)
2021-06-24