
设计模式
文章平均质量分 52
MonkyK
这个作者很懒,什么都没留下…
展开
-
设计模式——构建器(builder)
Factory Method,Abstract Factory,Prototype,Builder属于”对象创建“模式。“对象创建”绕开new,来避免new过程中导致的紧耦合,从而支持创建对象的稳定性。motivation:在面对“一个复杂对象”创建时,通常其各子部分用一定的算法构成;由于需求变化,各子部分会剧烈变化,但是其算法确实稳定的。key interface or class:...原创 2020-01-06 00:43:10 · 239 阅读 · 0 评论 -
设计模式——解析器(parser)
特定领域,某些变化虽然频繁,但是可以抽象为某种规则;结合特定领域,将问题抽象为语法规则,从而给出该领域的一般性解决方案。interpreter属于"领域规则"模式。motivation:软件构件过程中,对于某一特定领域的问题比较复杂,类似结构重复出现;可以将特定领域的问题表达为语法规则下的句子,然后使用解释器来解释这样的句子。key interface or class:...原创 2020-01-05 22:14:30 · 1375 阅读 · 0 评论 -
设计模式——访问器模式(visitor)
组件构建构成中,组件行为的变化经常导致组件本身剧烈的变化;“行为变化”将组件本身和组件行为解耦,从而支持组件行为变化。command,visitor属于行为变化模式。motivation:软件构件过程中,由于需求的变化,某些类的层次结构中,常常需要增加新的行为,入股直接在基类中进行更改,将会给子类带来繁重的变更负担,甚至改变原有的设计;在不更改层级结构的前提下,在运行时透明地根据需求,为类...原创 2019-12-23 02:38:59 · 302 阅读 · 0 评论 -
设计模式——命令模式(command)
组件构建构成中,组件行为的变化经常导致组件本身剧烈的变化;“行为变化”将组件本身和组件行为解耦,从而支持组件行为变化。command,visitor属于行为变化模式。motivation:软件构件过程中,“行为请求者”和“行为执行者”常常呈现出紧耦合;在某些场合——例如记录、撤销/重做,事务等处理时,这种无法抵御变化的紧耦合时不适应软件发展的;将一个请求(行为)进行对象化,从而可以使用不同...原创 2019-12-23 01:49:55 · 175 阅读 · 0 评论 -
设计模式——职责链(chain of responsibility)
常常在一些组件内部会有特定数据结构,如果客户代码直接使用这些特定数据结构,会极大破坏组件复用;因此,可以将组件中主句结构封装在内部,为外部提供统一的接口,来实现与特定数据结构无关的访问。composite,iterator,chain of responsibility属于数据结构模式。motivation:一个请求可能会被多个对象处理,但是每个请求只能有一个接收者;如果显示指定,一定会给...原创 2019-12-23 01:26:03 · 199 阅读 · 0 评论 -
设计模式——迭代器(iterator)
常常在一些组件内部会有特定数据结构,如果客户代码直接使用这些特定数据结构,会极大破坏组件复用;因此,可以将组件中主句结构封装在内部,为外部提供统一的接口,来实现与特定数据结构无关的访问。composite,iterator,chain of responsibility属于数据结构模式。motivation:软件构建过程中,集合对象内部的数据结构变化各异,我们希望在不暴露器内部实现的同时,...原创 2019-12-23 00:52:54 · 140 阅读 · 0 评论 -
设计模式——组合模式(composite)
常常在一些组件内部会有特定数据结构,如果客户代码直接使用这些特定数据结构,会极大破坏组件复用;因此,可以将组件中主句结构封装在内部,为外部提供统一的接口,来实现与特定数据结构无关的访问。composite,iterator,chain of responsibility属于数据结构模式。motivation:某些情况下,软件系统过多依赖对象容器复杂的内部实现,在其内部实现发生变化时,会对代...原创 2019-12-22 23:03:55 · 177 阅读 · 0 评论 -
设计模式——状态模式(state)
在组件构件的过程中,某些对象的状态经常变化,如何对这些变化进行有效的管理,同时维持高层模块的稳定。state,memento属于状态变化类别的设计模式。motivation:在软件构件过程中,某些对象的状态发生变化,其行为也相应发生变化;如何在运行时根据对象状态来透明更改对象行为,而不会在对象状态和操作之间引入紧耦合。key interface or class:1...原创 2019-12-22 22:10:52 · 287 阅读 · 0 评论 -
设计模式——适配器模式(adapter)
某些接口之间的依赖,往往会带来问题,添加一层间隔的稳定接口来隔离接口,常常是一种解决办法。facade,proxy,adapter,mediator属于接口隔离类。motivation:软件系统中,由于应用环境的变化,常常需要将一些现存对象,放在新的环境中使用,但是新环境中对接口的要求是这些对象所不满足的;将现存的接口转化为客户希望的接口。key interface or class:...原创 2019-12-08 17:03:03 · 142 阅读 · 0 评论 -
设计模式——代理模式(proxy)
某些接口之间的依赖,往往会带来问题,添加一层间隔的稳定接口来隔离接口,常常是一种解决办法。facade,proxy,adapter,mediator属于接口隔离类。motivation:在某些情况下(例如对象创建的开销很大,某些操作需要安全控制,或者需要进行线程外的访问),直接访问会给使用者或者系统带来很多麻烦;需要为其他对象提供一种代理一控制对该对象那个的访问。key interfa...原创 2019-12-08 16:16:01 · 137 阅读 · 0 评论 -
设计模式——门面模式(facade)
某些接口之间的依赖,往往会带来问题,添加一层间隔的稳定接口来隔离接口,常常是一种解决办法。facade,proxy,adapter,mediator属于接口隔离类。motivation:A方案中组件的客户以及组件中子系统存在过多的耦合,为子系统中的一组接口提供稳定界面,需要提供一个高层接口,为子系统提供稳定复用。key interface or class:1....原创 2019-12-08 15:20:39 · 168 阅读 · 0 评论 -
设计模式——单件模式(singleton)
“面对对象”很好解决了抽象的问题,通常面对对象的成本几乎可以忽略不计,但是有时候面对起成本需要谨慎对待。singleton,flyweight属于”对象性能“模式。motivation:在软件中,有时候一个对象只需要一个对象的存在,才能保证正确的逻辑和良好的效率。key interface or class:1. 有getInstance的方法得到该对象,该方法中需...原创 2019-12-06 18:14:43 · 175 阅读 · 0 评论 -
设计模式——原型模式(prototype)
Factory Method,Abstract Factory,Prototype,Builder属于对象创建模式。prototype模式使用情况比较少,通过深拷贝来复制当前状态的对象???motivation:创建某些结构非常复杂的对象,由于需求的变化,这些对象面临着剧烈的变化,但是他们却能有一个比较稳定一致的接口。key interface or class:1...原创 2019-12-05 21:05:01 · 192 阅读 · 0 评论 -
设计模式——抽象工厂(absolute factory)
Factory Method,Abstract Factory,Prototype,Builder属于对象创建模式。motivation:可能面对一系列相互依赖的对象时;可能面对更多系列对象的创建工作。key interface or class:1. IFactory基类接口。feature: 多个factory method放在一个抽象工厂接口中。struc...原创 2019-12-02 21:13:20 · 189 阅读 · 0 评论 -
设计模式——工厂方法(Factory Method)
Factory Method,Abstract Factory,Prototype,Builder属于对象创建模式。motivation:在创建对象时,创建对象的具体类型经常变化;定义一个用于创建对象的接口,让子类来决定实例化哪个类,使得实例化延迟(目的是解耦,手段是虚函数)。key interface or class:1. product的基类接口;...原创 2019-11-24 21:52:41 · 226 阅读 · 0 评论 -
设计模式——桥模式(bridge)
Decorator,Bridge属于单一职责模式。motivation:某些类型的固有实现逻辑,是的他们又多个维度的变化;需要使得类型在者多个维度上(如实现平台和实现的版本)进行灵活变化,而不带来额外的复杂度。key interface or class:1.接口类,如Messager;2.接口实现类,如MessagerImp,用于被接口中函数调用以...原创 2019-11-24 18:11:42 · 221 阅读 · 0 评论 -
设计模式——装饰器模式(decorator)
Decorator,Bridge属于单一职责模式。motivation:过度使用继承来扩展对象的功能,由于继承为类型引入了静态特性,是的这种扩展缺乏灵活性;并且随着子类的增多,更多子类的组合会导致更多子类的膨胀。(使用组合优于继承的设计原则)上图的众多子类经过重构之后,形成下图子类较少,更易维护的结构。key interface or class:1.实现基...原创 2019-11-23 23:00:04 · 146 阅读 · 0 评论 -
设计模式——策略模式(strategy)
Template、Strategy、Observor属于构件协作类型的设计模式。motivation:某些对象使用的算法多种多样经常改变,如果这些对象都编码到对象中,将导致对象算法十分复杂;支持不使用的算法也是一种性能负担(封装算法,相互替换)。key interface or class:1.library或者framework—在框架或者类库中定义主流程,对变化的子...原创 2019-11-23 18:33:58 · 245 阅读 · 0 评论 -
设计模式——模版模式(template)
Template、Strategy、Observor属于构件协作类型的设计模式。motivation:对于某一项任务,常常有稳定的整体操作结构,但是各个子步骤却又很多改变的需求,或者由于固有原因无法与整体任务结构一起实现(整体稳定,局部变化)。key interface or class:1.library或者framework—在框架或者类库中定义主流程,对变化的子类...原创 2019-11-23 17:29:45 · 271 阅读 · 0 评论 -
设计模式——观察者模式(observor)
Template、Strategy、Observor属于构件协作类型的设计模式。motivation:在目标对象状态发生改变时,所有订阅者将得到通知;构建消息通知依赖关系,并使之到达松耦合。key interface or class: 1.observor—观察者,在目标状态更新发出通知时,自身进行更新操作(update); 2.subject—目标对...原创 2019-11-17 19:00:38 · 313 阅读 · 0 评论