策略模式的定义
定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。所谓算法族,使用了同一接口,分别封装实现的类的集合叫做算法族。
例如:设计一个鸭子游戏,有的鸭子会飞,有的鸭子不会飞 ( 玩具鸭子 ) ;有的鸭子会叫,有的鸭子不会叫,所以分别用 FlyBehavior 和 QuackBehavior 实现飞和叫的接口,然后可以分别用具体的类来继承实现这两个接口;然后在设计一个鸭子的类 Duck ,将 FlyBehavior 和 QuackBehavior 作为鸭子的属性 ( 目的是委托,调用不同的飞和叫的行为 ) ,不同的鸭子可以继承此 Duck 类。
装饰者模式的定义
动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
例如:星巴克饮料设计,首先设计一个抽象类 Beverage, 然后设计一个装饰者类 CondimentDecorator ,和几个咖啡类型类 HouseBlend,DarkRoast,Espresso 和 Decaf ,这几个类都是继承 Beverage 类,然后设计调料类 Milk,Mocha,Soy 和 Whip ,这四各类是继承 CondimentDecorator 类,而且必须有一个 Beverage 类的成员作为属性。可以这样理解,咖啡类型类可以看作是固定的,你买咖啡是必须选其中一种,而调料类却是可以动态添加的,比如你选了一种咖啡类型,然后想添加 Milk 和 Mocha ,随你选。
观察者模式的定义:
定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
Subject (被观察者)
被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。 Subject 需要维持(添加,删除,通知)一个观察者对象的队列列表。
ConcreteSubject
被观察者的具体实现。包含一些基本的属性状态及其他操作。
Observer (观察者)
接口或抽象类。当 Subject 的状态发生变化时, Observer 对象将通过一个 callback 函数得到通知。
ConcreteObserver
观察者的具体实现。得到通知后将完成一些具体的业务逻辑处理。
单例模式的定义:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
实现方法是将构造函数声明为私有的,然后提供一个共有的方法来构造,但必须保证只能构造一次。
代理模式的定义:
为其他对象提供一种代理以控制对这个对象的访问。
代理(Proxy)里面有个它所代理的对象(Subject),然后访问代理方法时,代理对象Proxy其实是调用Subject的方法。
建造者模式的定义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
工厂方法模式的定义:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
抽象工厂模式的定义:
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
模板方法模式的定义:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
外观模式的定义:
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
原型模式的定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
推荐网站:好巴鹿(http:// www.haobalu.com )