随笔分类 - 设计模式
摘要:IOC AOP 不是什么技术而是一种设计模式 学习 IOC AOP 其实是在学习一种思想。1.IOC IOC其实是将对象的创建和获取提取到外部。由外部IOC容器提供需要的组件。 看下面代码: public class Girl { //外部包办直接传入boy类 publ...
阅读全文
摘要:访问者(Visitor)模式:访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 /* * 抽象访问者(Visitor)角色:声明了一个或者多个访问操作,形成所有的具体元素角色必须实现的接口。 * 具体...
阅读全文
摘要:享元(Flyweight)模式:运用共享技术有效的支持大量细粒度的对象。 /* * 抽象享元(Flyweight)角色:此角色是所有的具体享元类的超类,为这些类规定出需要实现的公共接口。 那些需要外蕴状态(External State)的操作可以通过调用商业方...
阅读全文
摘要:中介者(Mediator)模式:用一个中介对象来封装一系列的对象交互,中介者使各个对象不需要显示的相互引用,从而使得耦合松散,而且可以独立的改变他们之间的交互 了解《迪米特法则》的朋友就知道,迪米特法则说的就是:一个对象应当对其它对象有尽可能少的了解迪米特法则的核心观念就是类间解耦,弱耦合,只有弱...
阅读全文
摘要:职责链(Chain of Responsibility)模式:使多个对象都有机会处理请求,从而避免请求发送者呵接受者之间的耦合关系。将这个对象连成一条链子,并沿着这条链传递该请求,知道有一个对象处理它。 /* * 抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以...
阅读全文
摘要:命令(Command)模式:命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象 /* * 客户(Client)角色:创建了一个具体命令(ConcreteCommand)对象并确定其接收者。 * 命令(Command)角色:声明了一个给所有具体命...
阅读全文
摘要:桥梁(Bridge)模式:桥梁模式是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP)都很有帮助。理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格 /* * 抽象化(Abstract...
阅读全文
摘要:/* *迭代器(Iterator)模式:提供货一种方法顺序反问一个聚合对象中的各个元素。 */ ConcreteAggregate a = new ConcreteAggregate(); a[0] = "A"; a[1] = "B"...
阅读全文
摘要:组合(Composite)模式:将对象组合树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象具有一致性 /* * 抽象构件(Component)角色:这是一个抽象角色,它给参与组合的对象规定一个接口。这个角色给出共有接口及其默认行为。 * 树叶构件(Lea...
阅读全文
摘要:*备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对戏的内部状态, * 并在该对象之外保存这个状态。这样以后就能恢复到原来保存的状态 *Originator(发起人): 负责创建一个备忘录 Memento,用...
阅读全文
摘要:*状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的时候,吧状态判断逻辑独立到一系列的类中,是复杂的逻辑简单化。 Work work = new Work(); ...
阅读全文
摘要:观察者(Observer)模式:定义了一种一对多的依赖关系。让多个观察者对象同时监听某一个主题对象。 这个主题对象发生变化时会通知所有观察者对象,使他们字段更新自己 /* * 抽象主题(Subject)角色:主题角色把所有对观察考对象的引用保存在一个聚集里,每个主题都可以有任何数量的观...
阅读全文
摘要:门面(Facade)模式 也叫 外观模式。外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统更加容易使用 /* * 门面(Facade)角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。 在...
阅读全文
摘要:/* * 抽象模版(AbstractClass)角色有如下的责任: 定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。 定义并实现了一个模版方法。这个模版方法一般是一个具体方法,它给出了一...
阅读全文
摘要:代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的反问。 * 抽象主题角色(Subject):声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题。 * 代理主题(Proxy)角色:代理主题角色内部含有对真是主题的引用,从而可以在任何时候操作真...
阅读全文
摘要:/* * 环境(Context)角色:持有一个Strategy类的引用。 * 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。 * 具体策略(ConcreteStrategy)角色:包装了相关的算法或...
阅读全文
摘要:一、装饰(Decorator)模式 装饰(Decorator)模式又名包装(Wrapper)模式[GOF95]。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。二、装饰模式的结构抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件(Co...
阅读全文
摘要:一、合成(Composite)模式 合成模式有时又叫做部分-整体模式(Part-Whole)。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。 合成模式可以使客户端将单纯元素与复合元素同等看待。 从和尚的故事谈起 这是小时候我奶奶讲的故事:从前有个山,山里有个庙,庙里有个老和尚在...
阅读全文
摘要:一、适配器(Adapter)模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作二、类的Adapter模式的结构: 目标(Target)角色:这是客户所期待的接口。因为C#不支持多继承,所以Target必须是接口,不可以是类。 ...
阅读全文
摘要:一、原型(Prototype)模式 原型模式的用意是:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。从孙大圣的手段谈起 孙悟空在与黄风怪的战斗中,"使一个身外身的手段:把毫毛揪下一把,用口嚼得粉碎,望上一喷,叫声'变',变有百十个行者,都是一样...
阅读全文