设计模式
文章平均质量分 79
二十行
一个非计算机专业出身的程序员自学之路
展开
-
设计模式实现(十二)--- 状态模式(State)
状态模式(state):当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂的情况(也就是if过于多的情况)。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。当然,如果这个状态判断很简单,那么就没必要使用状态模式了。。。感觉这个设计模式有点作孽啊,用了设计模式比直接if判断还原创 2014-07-31 09:52:08 · 335 阅读 · 0 评论 -
设计模式实现(十)--- 观察者模式(Observer)
观察者模式:顶一了一种一堆多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。观察者与通知者,你中有我,我中有你。为了降低偶尔,针对抽象进行抽象。将抽象类的指针或者引用作为成员变量,这样就可以充分的利用多态的性质。观察者的特点:将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致原创 2014-07-30 17:58:42 · 370 阅读 · 0 评论 -
设计模式实现(十三)--- 适配器模式(Adapter)
适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。在GoF的设计模式中,对适配器模式讲了两种类型,类适原创 2014-07-31 13:20:04 · 492 阅读 · 0 评论 -
设计模式实现(十一)--- 抽象工厂模式(Abstract Factory)
因为客户的需求变化,在设计系统项目的时候有时候会更换数据库,如果数据库的实现单纯根据数据库单独实现,没有考虑到以后的复用的话,那么在下一个类似的系统但使用不同的数据库项目时,需要修改大量的代码才可以实现功能。我们可以根据抽象工厂模式,将不同的数据库系统分别做成不同的类,都继承自同一个父类。那么在以后的项目中就可以利用多态的特性,调用父类工厂指针生成对应的数据库对象,来满足功能要求。抽象原创 2014-07-31 09:41:35 · 352 阅读 · 0 评论 -
设计模式实现(十九)---命令模式(Command)
命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。原创 2014-08-12 08:49:46 · 337 阅读 · 0 评论 -
设计模式实现(二十一)---中介者模式(Mediator)
中介者模式(Mediator):用一个中介对象来分装一系列的对象交互。中介者原创 2014-08-12 12:10:50 · 365 阅读 · 0 评论 -
设计模式实现(十八)---桥接模式(Bridge)
对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。原创 2014-08-12 07:53:34 · 381 阅读 · 0 评论 -
设计模式实现(二十)---职责链模式(Chain of Responsibility)
职责连模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并原创 2014-08-12 10:12:15 · 294 阅读 · 0 评论 -
设计模式实现(二十二)--- 享元模式(Flyweight)
享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。原创 2014-08-13 13:19:16 · 370 阅读 · 0 评论 -
设计模式实现(二十三)--- 解释器模式(interpreter)
解释器模式(interpreter),给定一个语言,定义它的原创 2014-08-14 11:10:02 · 361 阅读 · 0 评论 -
设计模式实现(十七)---单例模式(SingleTon)
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它原创 2014-08-04 20:04:57 · 334 阅读 · 0 评论 -
设计模式实现(七)--- 模板方法模式(Template Method)
概述:如果继承有意义,就应该要称为子类的模板,所有重复的代码都应该上升到父类中区,而不是让每个子类都一一重复。当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可定重定义该算法的某些特定步骤。原创 2014-07-29 16:41:17 · 358 阅读 · 0 评论 -
设计模式实现(八)--- 外观模式(Facade)
外观模式的目的是降低类与类之间的耦合性,在我们了解外观模式前先学习下迪米特法则。原创 2014-07-29 19:42:32 · 338 阅读 · 0 评论 -
设计模式实现(一)---简单工厂模式
简单工厂模式的作用是将逻辑功能部分(算法)与界面功能部分(客户端)的代码逻辑功能部分(算法部分)原创 2014-07-24 18:38:02 · 323 阅读 · 0 评论 -
设计模式实现(三)---装饰模式
装饰者模式实现概要#include #include //Component类class Component{public: virtual void Operation() = 0;};//ConcreteComponent类class ConcreteComponent : public Component{public: void Operation(){prin原创 2014-07-25 09:58:37 · 462 阅读 · 0 评论 -
设计模式实现(二)---策略模式、策略模式与简单工厂模式结合使用
策略模式(Strategy): 它定义了算法家族,分别原创 2014-07-24 19:23:02 · 619 阅读 · 0 评论 -
设计模式实现(十四)--- 备忘录模式(Memento)
备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以讲该对象恢复到原先保存的状态。原创 2014-08-01 18:29:56 · 376 阅读 · 0 评论 -
设计模式实现(十五)--- 组合模式(Composite)
组合模式(Composite),将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。何时使用组合模式:当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了。组合模式这样就定义了包含人力资源部和财务部这些基本对象和分公司、办原创 2014-08-01 20:13:35 · 366 阅读 · 0 评论 -
设计模式实现(十六)---迭代器模式(Iterator)
迭代器在比较高级的语言如Java,C#,C++中都已经集成进语言中,所以平时使用的并不过。学习该设计模式原创 2014-08-01 21:43:27 · 382 阅读 · 0 评论 -
设计模式实现(五)--- 工厂方法模式(Factory Method)
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是在需要为工厂新加功能的时候,就不得不更改工厂中的代码,增加实例化该功能类的判断条件。违背了开放-封闭原则(对外扩展开放,对内修改封闭)。原创 2014-07-28 20:37:15 · 373 阅读 · 0 评论 -
设计模式实现(六)--- 原型模式(Prototype)
原型模式(Prototype),是原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。原创 2014-07-29 15:34:29 · 355 阅读 · 0 评论 -
设计模式实现(四)--- 代理模式(Proxy)
代理模式UML图及一般实现方法:原创 2014-07-28 16:40:07 · 346 阅读 · 0 评论 -
设计模式实现(九)--- 建造者模式(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图时,我们需要应用一个设计模式,“建造者模式(Builder)”,又叫生成器模式。建造者模式可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型可以得到它们,而具体建造的过程和细节就不需要知道了。原创 2014-07-29 21:06:14 · 430 阅读 · 0 评论 -
设计模式实现(二十四)---访问者模式(Visitor)
访问者模式(Visitor),表示一个作用于某对象结构中的原创 2014-08-17 13:58:05 · 615 阅读 · 1 评论