随笔分类 -  设计模式

摘要:1、意图 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 2、核心思想 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原型模式允许动态的增加或减少产品类,产品类不需要非得有任何事先确定的等级结构。 3、优缺点分析 GOOD: 从一个对象再创建另外一个可定制的对象,而无需知道任何创建的细节。并能提高创建的性能。 说... 阅读全文
posted @ 2010-05-30 21:14 红脸书生 阅读(497) 评论(0) 推荐(0)
摘要:简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端输入的选择条件动态的实例化相关的类,对于客户端来说,去除了与具体产品的依赖。 但是简单工厂方法违背了开放——封闭模式。 1、意图 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 2、核心思想 核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给了子类去做,成为一个... 阅读全文
posted @ 2010-05-29 21:34 红脸书生 阅读(536) 评论(0) 推荐(0)
摘要:一、意图 代理模式:为其他对象提供一种代理以控制对这个对象的访问 二、基本思想 代理模式实际就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。 三、优缺点分析 GOOD:(适用场合) 远程代理:也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象在不同地址空间的事实。 例如:客户端程序调用代理就可以解决远程访问的问题 虚拟代理:是根据需要创建开销很大的对象... 阅读全文
posted @ 2010-05-27 22:14 红脸书生 阅读(618) 评论(1) 推荐(0)
摘要:一、基本概念 抽象不应该依赖细节,细节应该依赖抽象。即针对接口编程,不要对实现编程。 A:高层模块不能依赖低层模块,两者都应依赖抽象。 B:抽象不应该依赖细节,细节应该依赖抽象。 二、里氏代换原则(LSP) 子类型必须能够替换掉它们的父类型 解释:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。 也就是说,在软件里面,把父类都替换成它的子... 阅读全文
posted @ 2010-05-25 20:58 红脸书生 阅读(868) 评论(1) 推荐(0)
摘要:一、基本概念 OCP: 软件实体(类、模块、函数等)应该可以扩展,但是不可修改。 解释:即对于扩展是开放的,对于修改是封闭的。 二、实际技巧 实际上,无论模式多么的‘封闭’,都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。 即:当变化发生时,我们就创建抽象来隔离以后发... 阅读全文
posted @ 2010-05-25 20:11 红脸书生 阅读(575) 评论(0) 推荐(0)
摘要:就一个类而言,应该仅有一个引起它变化的原因。   如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责能力。这种耦合会导制脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。 如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。 阅读全文
posted @ 2010-05-25 20:07 红脸书生 阅读(365) 评论(0) 推荐(0)
摘要:一、意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory使一个类的实例化延迟到其子类。(四人团) 实际上: 工厂模式主要就是用于创建对象。新添加类时,不会影响以前的系统代码。 二、基本思想 核心思想:是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。 客户类和工厂类分开,消费者任何时候需要某种产品类对象,只需要向工厂类(有静态成... 阅读全文
posted @ 2010-05-23 19:35 红脸书生 阅读(1054) 评论(0) 推荐(0)