设计模式
tianya_team
关注抖音号:天天coding,免费获得源码以及技术指导。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
工厂模式(上)
请先理解为什么要引入工厂模式?原创 2016-01-22 10:22:15 · 532 阅读 · 0 评论 -
模板方法模式
模板方法模式:在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。这个模式比较简单,下面先来看咖啡和茶的例子:#include using namespace std;class CaffeineBeverage{public: virtual void prepareRecipe() final原创 2016-06-08 10:07:01 · 273 阅读 · 0 评论 -
观察者模式
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。注:注意有一个实现Observer接口的对象列表,可以随时增加观察者。当有新的具体类需要当观察者,所有要做的就是在新的类里实现此观察者接口,然后注册为观察者即可。原创 2016-01-20 16:03:47 · 350 阅读 · 0 评论 -
策略模式
策略模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。原创 2016-01-20 14:31:01 · 385 阅读 · 0 评论 -
设计原则
1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。2.针对接口编程,而不是针对实现编程。针对实现编程:Dog d=new Dog(); //d是Dog的具体实现d.bark(); //针对接口编程:Animal animal=new Dog(); //利用animal进行多态调用animal.ma原创 2016-01-19 21:20:03 · 428 阅读 · 0 评论 -
外观模式
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。其目的是让接口更简单,将一个或数个复杂的一切都隐藏在背后,只露出一个干净美好的外观。类图:注意:1)外观模式没有“封装”子系统的类,外观只提供简化的接口。客户如果觉得有必要,依然可以使用子系统的类。2)外观和适配器的区别:适配器的意图是,“改变”接口符合客户的期望原创 2016-04-19 20:29:58 · 522 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。下面先看一个简单的适配例子:#include #include #include #include using namespace std;/*定义鸭子接口*/class Duck{public: virtual void quack() = 0; virtual原创 2016-04-19 16:00:09 · 489 阅读 · 0 评论 -
命令模式
命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的动作。类图:下面是一个简单的实现了两个命令及两个接收者:#include #include using namespace std;/*下面定义的是厂商提供的接收命令的对象(接收者)*/class Light{public: void on(){ cout原创 2016-04-18 09:50:01 · 439 阅读 · 0 评论 -
装饰者模式
装饰者模式原创 2016-01-21 15:40:11 · 406 阅读 · 0 评论 -
单例模式
单例模式:确保一个类只有一个实例,并提供一个全局访问点。单例模式类图:经典单例模式实现:class Singleton{private: static Singleton *uniqueInstance; Singleton(){}public: static Singleton *getInstance(){ if (uniqueInstance == NU原创 2016-02-22 15:03:45 · 309 阅读 · 0 评论 -
工厂模式(下)
依赖具体类的关系如下:依赖抽象如下:在应用工厂方法之后,高层组件(PizzaStore)和低层组件(下面这些披萨)都依赖了Pizza抽象。依赖倒置原则,倒置在哪:从上图2可以看出低层组件依赖高层的抽象,同样高层组件也依赖同样的抽象。即现在高层和低层模块都依赖这个抽象。避免违反依赖倒置原则的几个指导方针:1)变量不可以持有具体类的引用。(如果使用new,变量就会持原创 2016-01-30 13:04:29 · 335 阅读 · 0 评论 -
代理模式
尽管Decorator的实现部分与代理相似,但Decorator的目的不一样。Decorator为对象添加一个或多个功能,而代理则控制对对象的访问。意图: 为其他对象提供一种代理以控制对这个对象的访问。适用性: 在需要用比较通用和复杂的对象指针代替简单的的指针的时候,使用代理模式。 1、远程代理,也就是为一个对象在不同的地原创 2018-01-13 17:28:05 · 404 阅读 · 0 评论
分享