
软件设计模式
文章平均质量分 94
xtx1990
新一代年轻人
展开
-
抽象工厂模式
500)this.width=500;" border="0"> Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE原创 2012-11-12 13:39:20 · 300 阅读 · 0 评论 -
观察者模式
观察者模式,又叫做发布-订阅(Publish/Subscribe)模式 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使得它们能够自动更新自己。 观察者模式的动机 将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维护一致性而使各类紧密耦合,这样会原创 2012-11-12 13:39:27 · 469 阅读 · 0 评论 -
装饰模式
单一职责原则: 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应原创 2012-11-12 13:39:25 · 399 阅读 · 0 评论 -
适配器模式
适配器模式(Adapter): 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单地说,就是需要的东西 就在面前,但却不能使用,而短时间又无法改造它,于是就想办法适配它。适配这个词可以这样理解。比如,有些国家用110V电压,而我们国家用的是 220V,但我们的电器,比如笔记本电脑是不能什么电压都能用的原创 2012-11-12 13:39:22 · 346 阅读 · 0 评论 -
桥接模式
先来个设计原则上的建议:因为对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖 关系。以致于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的 类替换。这种依赖关系限制了灵活性并最终限制了复用性。 合成/聚合复用原则,尽量使用合成/聚合,尽量不要使用类原创 2012-11-12 14:09:16 · 501 阅读 · 0 评论 -
简单工厂模式
500)this.width=500;" border="0"> 实现方式(附图) 简单工厂模式的UML类图(见右图) 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决应该 创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 该模式中包含的角色及其职责 工厂(Creator)角色 简单工厂模式的核心,它负责实原创 2012-11-12 13:39:14 · 319 阅读 · 0 评论 -
工厂方法模式
500)this.width=500;" border="0">一个工厂负责一个产品编程实例:// this is a example for test factory method#include using namespace std;//abstract foodclass baseFish{ public:// virtual ~baseFish(){};原创 2012-11-12 13:39:17 · 293 阅读 · 0 评论 -
组合模式
组合模式(Composite) 将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 根据上图可以看出Component中纯虚函数Add、Remove。也就是说在Leaf类当中也有Add、Remove,树叶不是不可以再长分枝吗?呵呵~教材上把这种方式叫做透明方式。 透明方式:也就是说在Component中声明所有用来管理子对象原创 2012-11-12 13:39:30 · 333 阅读 · 0 评论