design pattern
lq19880488
这个作者很懒,什么都没留下…
展开
-
装饰器
也称为:wrapper 适用场景 动态或者透明地在某一个对象中添加职责,而不影响其他的对象 职责是可以被收回的 不能被子类化。有些时候,很多独立的扩展时可行的,但是有可能产生子类数量的爆炸性增长来支持每一种组合。也可能一个类的定义是隐藏的或者说对子类是不可见的。 也称为:wrapper 适用场景: 动态或者透明地在某一个对象中添加职责,而不影响其他的对象 职责是可以被收回的原创 2014-11-10 15:35:48 · 363 阅读 · 0 评论 -
原型
适用场景 需要构造的类是在运行时确定的避免构造产品类和产品构造工厂类出现类似的结构构造一个类对象只有一个或者一些这组合的状态,使用克隆的方式比重新构造方便 结构: 参与对象: 原型类 具体原型类 客户 使用方式: 客户调用原型对象的克隆方法 结果: 在运行时增加或者删除产品对象原创 2014-11-05 13:39:36 · 345 阅读 · 0 评论 -
构造器
适用场景: 1. 构造复杂对象的算法应该独立于对象组装和组合 2. 构造过程必须允许不同于对象构造方法不同表示方法的存在。 结构: 参与对象: 构造器接口 具体构造器 构造器调用者 产品 使用方式: 客户掉那个构造器调用者对象构造指导对象,并配置需要的具体构造器对象,并配置需要的具体构造器对象 构造器调用者在任何需要的时候调用 构造器接受请求,并构造各个部分 客户原创 2014-11-05 13:38:24 · 337 阅读 · 0 评论 -
抽象工厂
也称为:Kit 动机、有很多个系列的产品要管理,用户只需要使用先关系列的产品,而不需要知道产品产生的具体方式,同时,在使用产品时,要保证一个客户使用的产品都属于同一个系列的产品。 使用情景: 1. 系统运行需要独立于产品的产生,组装,以及表示 2. 系统运行需要且仅需要一个系列的产品 3. 一个产品系列是一起设计,协同使用的,并且该准则不能被打破 4. 一系列产品可以被提供,只需要提供原创 2014-11-05 10:08:15 · 367 阅读 · 0 评论 -
单例模式
适用场景: 1. 一个类需要且只需要有一个对象被创建,客户只能从一个地方访问该对象 2. 单例对象可以出现自类时,客户可以使用新的子类对象,而不需要改变代码 结构: 参与对象: 单例对象 使用方式: 客户通过单利对象的方法来访问单例对象 使用结果: 单例对象的访问权限被控制 减少命名空间 允许修改对象的操作盒表现方式 比类操作更加灵活原创 2014-10-27 16:50:23 · 340 阅读 · 0 评论 -
工厂模式
也称为:虚拟构造方法 使用场景: 1. 类不能预知它本身创造的对象 2. 一个类想要它的自类来确定具体需要构建的对象 3. 类将责任代理给其他几个帮助类,可以从帮助类中获取被创建对象的信息。 结构: 参与对象: 产品类 具体产品类 创建者接口 具体创建者 使用方式: 创建者依赖于它的自类定义的方法来产生一个具体产品对象。 使用结果: 工厂方法可以原创 2014-10-27 16:57:27 · 400 阅读 · 0 评论 -
责任链
使用场景 多于一个对象可能会处理一个请求。 向多个对象中的一个发送请求,而不指定具体的接受者 用来处理请求的对象的集合可以动态地修改 结构 参与对象: 处理类 定义一个处理请求的接口保存下一个处理对象的指针 具体处理类 处理属于他的请求能够访问它的下一个处理类如果他能处理这个请求则处理,如果不能,就把请求转发给下一个处理类 客户 初始化请求原创 2014-11-10 15:41:38 · 390 阅读 · 0 评论 -
facade
适用场景 需要为一个复杂的子系统提供一个简单的接口。 在客户端和实现类的凑向之间有很多依赖关系。 使子系统层次化。 结构 参与对象 Facade 了解子系统的工作原理把客户的请求代理给子系统 子系统类 实现子系统的功能处理发送给Facade对象的请求对facade是不了解的,也即是,他们不能引用facade对象 协同方式 客户端通过将请求发送给fa原创 2014-11-10 15:38:04 · 434 阅读 · 0 评论 -
Composite
使用场景 需要表示对象的部分-整体层级结构 想要客户能够忽略对象组合和单个对象之前的差异。客户端同等对待所有的对象。 结构 参与对象 组件 为所有的对象声明接口为所有的类实现默认的行为为访问和管理它的子组件声明接口(可选)为访问父组件声明接口 叶子节点 在组合结构中代表叶子对象,没有子对象定义组合结构中的原始操作 复合节点 为拥有子节点的原创 2014-11-10 15:33:04 · 447 阅读 · 0 评论 -
Proxy
也称为:Surrogate 适用场景 远程代理:为一个远程的对象提供一个本地代表 虚拟代理:在需要的时候才会创建一个比较昂贵的对象。 保护代理:控制对原对象的访问权限。在原对象需要不同的访问权限是比较有用 智能引用:是一个指针的代替,来完成额外的任务。 结构 参与对象 代理者 维护一个让代理访问主体对象的指针。提供一个和主题对象一样的接口,这样代理对象就能替代主体原创 2014-11-10 15:39:40 · 379 阅读 · 0 评论 -
适配器
也成为:Wrapper 使用场景 需要使用一个现有的类,而它实现的接口和需要的接口不一致想要创建一个可复用的类,来和一个不相关或者不能预知的类,也就是说,这个类不需要有需要兼容的接口需要使用几个现有的类,可是,使用子类来适配他们的接口又不现实。 对象适配器能适配父类的接口。 结构: 类适配器: 对象适配器: 参与对象: 目标类 客户 被适配对象(接口) 适配原创 2014-11-05 13:43:36 · 453 阅读 · 0 评论