设计模式
pppaass
这个作者很懒,什么都没留下…
展开
-
设计模式之组合模式
一、作用 为用户屏蔽叶子节点和非叶子节点的区别。二、优点缺点 没有明显特点。三、应用场景 如果有的类有"孩子",有的类却没有,但是这些类的属性一致,则可以这么设计。四、例子class Component{public: virtual void do()=0; virtual void原创 2015-03-15 19:44:19 · 262 阅读 · 0 评论 -
设计模式之桥接模式
一、作用将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。二、例子interface Implementor { public void operationImpl();}abstract class Abstraction { protected Im原创 2015-03-23 20:30:09 · 283 阅读 · 0 评论 -
设计模式之职责链
一、作用 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。二、例子class PurchaseRequest { private String purpose; //采购目的 public PurchaseRequest(String p原创 2015-03-24 08:34:35 · 354 阅读 · 0 评论 -
设计模式之原型
一、作用 使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。二、实例class CButton{privte: ...//成员变量public: ...//成员函数CButton* clone(){...//拷贝所有数据,创建一个全新的该类实例}}原创 2015-04-04 21:14:31 · 318 阅读 · 0 评论 -
设计模式之享元
一、作用 运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。二、例子 import java.util.*;//围棋棋子类:抽象享元类abstract class IgoChess原创 2015-04-04 21:28:43 · 361 阅读 · 0 评论 -
设计模式之备忘录
一、作用 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token。二、例子 public class Originator { public String state; public Originator(){} p原创 2015-04-21 08:47:03 · 332 阅读 · 0 评论 -
设计模式之中介者
一、作用 用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。二、优缺点 优点:减少对象之间的引用,使对象解耦。 缺点:中介者可能很臃肿。三、例子 //抽象中介者abstract cl原创 2015-04-17 08:15:42 · 279 阅读 · 0 评论 -
设计模式之解析器
一、作用 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。二、特点 它将文法分为终结者和非终结者,挺简单的。三、例子 //抽象表达式abstract class Node { public abstract NumberNode execut原创 2015-04-25 14:39:21 · 357 阅读 · 0 评论 -
设计模式读书感悟
一、设计模式是现成的解决某类问题的初步方案。二、从中要体会到如何构造一个完美的系统。(如何牵引系统,如何分类功能)三、设计模式是要构造一个对修改关闭,对扩展开放的系统。原创 2015-03-20 21:18:08 · 446 阅读 · 0 评论 -
设计模式之访问者
一、作用 提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。二、例子 //转刘伟博客import java.util.*;//员工类:抽象元素类interface Employee{ public void accept(Department h原创 2015-04-17 08:40:08 · 246 阅读 · 0 评论 -
设计模式之单例模式
一、作用 保证全局只用一个此类的实例。二、好处和缺点 没有特殊性。三、应用场景 一个带有全局化信息的class,就需要这样设计。三、例子 public class LazySingleton{ private: static LazySingleton newInstance = null; Laz原创 2015-03-15 19:16:23 · 360 阅读 · 0 评论 -
设计模式之建造者
一、作用 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。二、例子class Actor{ private String type; //角色类型 private String sex; //性别 private String face; //脸型原创 2015-03-23 20:22:26 · 282 阅读 · 0 评论 -
设计模式之策略模式
一、作用 定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。二、例子//电影票类:环境类class MovieTicket { private double price; private Discount discount; //维持一个对抽象折扣类的引用 publi原创 2015-03-23 20:12:44 · 292 阅读 · 0 评论 -
系统质量分析指标
扩展性:一个系统设计方案能够被扩展的程度。(Expandability: The degree to which the design of a system can be extended.) 简洁性:一个系统设计方案易于理解的程度。(Simplicity: The degree to which the design of a system can be understood e转载 2015-03-17 20:31:51 · 658 阅读 · 0 评论 -
设计模式之适配器模式
一、作用 将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。二、应用场景 在不改变原有系统的基础上,增加适配器以适应客户端的需求。三、例子class Wrapper extends Target { private OtherClass o; //维持一个对适配者对象的引用原创 2015-03-19 08:45:09 · 253 阅读 · 0 评论 -
设计模式之门面模式
一、作用 外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。二、优点缺点没有特殊性。三、应用场景 为一个复杂子系统提供一个简单接口。四、例子class Facade { private: Ring ring; Clarm clarm; Light ligh原创 2015-03-16 08:38:19 · 286 阅读 · 0 评论 -
设计模式之命令模式
一、作用 将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。二、例子//命令接收者abstract class Command { public abstract void execute();原创 2015-03-20 08:59:08 · 294 阅读 · 0 评论 -
设计模式之状态模式
一、作用 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。二、例子//状态抽象类abstract class State { public abstract void do();}//具体状态类,每个状态对应一个类class Conc原创 2015-03-20 21:09:54 · 255 阅读 · 0 评论 -
设计模式之代理模式
一、作用 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。二、优点和缺点 有可能代理实体是多余的。三、应用场景 真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。原创 2015-03-17 08:54:44 · 249 阅读 · 0 评论 -
设计模式之迭代器模式
一、作用 遍历数组中的元素。二、优点缺点 优点:将容器和遍历功能解耦。 缺点:多了一个类。三、应用场景 容器类比较臃肿的时候用最合适。四、例子class Iterator {public: Object first(); Object next(); Object currentItem();原创 2015-03-17 19:00:33 · 288 阅读 · 0 评论 -
设计模式之模板方法模式
一、作用 定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。二、例子abstract class AbstractClass { //模板方法 public void TemplateMethod() { PrimitiveOperatio原创 2015-03-17 19:29:41 · 271 阅读 · 0 评论 -
设计模式之抽象工厂
一、作用 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。它是一种对象创建型模式,分类创建一组类。二、例子//按钮接口:抽象产品interface Button { public void display();}//Spring按钮类:具体产品class SpringButton implements Button {原创 2015-03-17 19:52:40 · 298 阅读 · 0 评论 -
设计模式之观察者模式
一、作用 让多个观察者监视某一对象的变化,如果对象变化,则通知所有观察者。二、例子/// /// 抽象主题类 /// public abstract class Subject { private IList observers = new List(); ///原创 2015-03-17 19:12:10 · 258 阅读 · 0 评论 -
设计模式之工厂模式
一、作用 定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。二、与抽象工厂的区别 工厂模式能创建一个单一的产品簇,而抽象工厂可以创建一组产品簇,抽象工厂是工厂模式的进一步扩展。三、例子//抽象产品角色public interface Car{ public void drive(原创 2015-03-17 20:20:11 · 251 阅读 · 0 评论 -
设计模式之装饰模式
一、作用 动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。二、例子class Decorator{ private Component component; //维持一个对抽象构件对象的引用 public Decorator(Component component)原创 2015-03-19 21:10:17 · 387 阅读 · 0 评论