| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
将对象的使用与对象的创建分开。对象的使用者不负责创建对象,只需知道如何获取需 网管下载dl.bitscn.com
要的对象。这样,当被使用对象的创建过程需要变更或扩展时,对象的使用者无须变动,只要对专门负责创建该对象的对象工厂做必要的变更或扩展即可。
当 BasicProduct 有新的子产品 ExProduct3 要应用到系统时, Factory 的 createProduct()
网管bitscn_com
需要简单修改,增加一个“ else if ”分支,没有完全实现“对扩展开放,对修改封闭”。但当明确产品就是有限的几种时,仍是有效且常用的。
中国网管论坛bbs.bitsCN.com
当 BasicProduct 有新的子类 ExProduct3 要应用到系统时,新建一个对应的扩展自 网管u家u.bitsCN.com
BasicFactory 的 ExFactory3 即可,现有类无需修改,实现了“对扩展开放,对修改封闭”。 中国网管论坛bbs.bitsCN.com
控制系统最多存在某个类的一个实例。很容易将 Singleton Pattern 扩展为控制系统只能 网管联盟bitsCN@com
创建某个类的有限个实例的情形。系统中大部分管理服务对象都是单实例的。例如,系统存在多个用户实例,但只存在一个用户管理者对象。
网管下载dl.bitscn.com
|
public class Singleton { 网管bitscn_com
private static Singleton instance = null ; private Singleton() {}; // 控制外部不能自行创建 Sigleton 实例 中国网管论坛bbs.bitsCN.com
public static Singleton getInstance() { 网管网www.bitscn.com if ( null == instance ) { 网管u家u.bitscn@com instance = new Singleton(); } return instance ; } } 网管论坛bbs_bitsCN_com |
当一个产品( Product )由多个部分( Part1 , Part2 , … , Partn )组成,而各个部分又有 网管联盟bitsCN@com
不同的构造方式时。将产品各部分的构造和产品的组装分离,就是 Builder Pattern 。 Builder 是对产品各部分构造的抽象,而 Director 负责使用指定的 Builder 组装产品。这样,当系统有新的产品各部分构造方式需要加入时,只需实现继承自 Builder 的 ConcreteBuilder3 即可,系统其他类无需修改,实现了“对扩展开放,对修改关闭”。
给定一个对象实例 A ,得到一个另一个对象实例 B : B 的类型与 A 同, B 的内容与 A 网管下载dl.bitscn.com
相同。常称 B 为 A 的克隆或副本。
|
0
|
评论加载中…