建造者(生成器)模式-更新中
2015-12-30 18:20
141 查看
概述
建造者模式也叫生成器模式,23种设计模式之一,属于创建类模式。问题的提出
在类的应用中,有些类是容易创建对象的,直接调用构造函数即可。例如:
Student student = new Student(“10001”,”张三”,20);
表明学号10001,姓名为张三 ,年龄20的学生。
Circle c = new Circle(10.0f);
表明实例化一个半径是10的圆对象。
这两个类的一大特点是成员变量是基本数据类型或者其封装类,或者是字符串类。
但是有些类是不容易直接创建对象的,成员变量是自定义类型,如下所示:
[code]public class Product{ Unit1 u1 ; Unit2 u2 ; Unit3 u3 ; .......... }
可以看出Product是有Unit1 Unit2 Unit3三个单元组成,实例化Product对象不能简单的由Product p = new Product(Unit1,Unit2,Unit3)获得,必须先产生具体的对象U1 U2 U3,然后才能获得Product对象。
简单的实现方法如下:
[code]public class Product { Unit1 u1 ; Unit2 u2 ; Unit3 u3 ; public void createU1(){// 创建U1 ....... } public void createU2(){// 创建U2 ....... } public void createU3(){// 创建U3 ....... } public void composite(){ //以某种形式组合U1U2U3成Product // U1 +U2 +u3 } public static void main(String[] args){ Product product = new Product(); product.createU1(); product.createU2(); product.create3(); product.composite(); } }
运行完main方法,执行完composite方法后,Product实例化完成。
乍一看,本方法结局了复杂对象的创建问题,层次清晰,但是知悉考虑一下,本方法仅是解决了一类Product对象的创建问题,如果有两类Product,甚至更多呢?
可以想到的是,随着Product产品总数的增多或者减少,必须要修改原已有的源代码,这不是我们希望看到的情况,如何解决呢? 生成器模式(建造者模式)就是解决这类问题的重要手段。
生成器模式
生成器模式也成为建造者模式。生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
在软件设计中,有时候会面临一个非常复杂的对象的创建工作,这个复杂的对象通常可以分成几个较小的部分,由各个子对象组合出这个复杂对象的过程相对来说比较稳定,但是子对象的创建过程各不相同而且可能面临变化。根据OOD(面向对象设计Object-Oriented Design)中的OCP(开闭原则Open-Close Principle)原则,应该对这些子对象的创建过程进行变化封装。
相关文章推荐
- QT平台连接MySQL数据库
- iOS_Core Animation UIView的transform属性
- 19-《电子入门趣谈》第三章_电子世界中的五官---传感器-3.2.4加速度传感器
- Boost--时间和日期--(1)timer库的介绍
- HTML5 SSE自动推送
- 人生需要苦难和敌人
- 数据库003
- 基于jQuery的一个简单的图片查看器
- 指针数组和数组指针的区别
- teradata数据库-创建表及分区表CASE_N
- 记录-阿里云Oss文件上传
- 基于jQuery的一个简单的图片查看器
- jvm内存区域划分
- View的测量
- VC++获取程序运行路径
- 【linux】crontab定时命令
- FLIP和angle没关系不鸟
- Java 发送邮件
- +(void)load; +(void)initialize;有什么用处?
- android 消息推送机制之GCM(二)