设计模式
文章平均质量分 62
基于C++实现的常用设计模式。
Black.Spider
宝剑锋从磨砺出,梅花香自苦寒来
展开
-
设计模式总结
设计模式的目标是管理变化,提高代码复用。在使用模式的时候,应该非常明确需求的变化点与稳定点,否则设计模式不一定适用。另外,设计模式给予我们的只是一个参考,我们更应该关注和掌握的是设计原则,有了对设计原则的深刻理解,在设计代码的过程中,我们也能设计出适合我们自己业务场景的设计模式,这才是学习设计模式最终应该达到的层次。原创 2024-07-19 19:43:22 · 1202 阅读 · 0 评论 -
装饰模式原理与C++实现
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式属于结构型模式,它是作为现有的类的一个包装。通过使用组合而非继承的方式,实现了运行时动态扩展对象功能的能力,并且根据需要可以扩展多个功能,避免继承带来的灵活性差和多子类衍生的问题。装饰类在接口上表现为is-a Component的继承关系,继承了Component的所有接口。但是在实现上,又表现为has-a的组合关系,即装饰类又使用了另一个Componet类。原创 2024-07-17 22:57:05 · 809 阅读 · 0 评论 -
设计模式8大原则
上述原则所遵循的规则主要就是:降低代码耦合度,便于扩展;总会有变化和稳定的两种模块;当发生需求变化时,往往只需要新增一种子类。原创 2024-07-16 10:43:52 · 297 阅读 · 0 评论 -
模板方法原理与C++实现
定义一个操作中的算法骨架(稳定的),而将一些步骤的实现延迟到子类中(变化的)。模板方法使得子类可以复用一个算法的结构,而只改变(重写)这个算法的特定步骤。模板方法是一种非常实用且常见的设计模式,它使用简单的机制(虚函数)为应用程序框架提供了灵活的扩展点。模板方法中被模板方法调用的虚函数可以有具体实现,也可以没有任何实现(纯虚函数),但一般访问权限为protected,因为作为算法的一部分,它没有对外单独开放的必要。原创 2024-07-15 18:27:04 · 345 阅读 · 0 评论 -
策略模式原理与C++实现
定义一些列算法,把他们一个个封装起来,并且使他们可以相互替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展、子类化)。Strategy及其子类为组件提供了一系列可重用的算法,使得类型在运行时方便的根据需要在各算法之间切换。策略模式消除了条件判断语句,含有许多条件判断的语句往往可以使用策略模式来解耦合。如果Strategy对象没有数据成员,那么各个上下文之间可以共享同一个Strategy对象,从而节省对象开销。原创 2024-07-15 18:26:17 · 502 阅读 · 0 评论 -
观察者模式原理与C++实现
定义观察者模式又叫发布-订阅模式。定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个目标对象。这个对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。主要角色如下:Subject:可以有任意多个观察者观察同一个目标,提供注册和删除观察者对象的接口。Observer:为那些在目标发生改变时需要获得通知的对象定义一个更新接口。ConcreteSubject:将有关状态存入concreteObserver对象,当状态发生改变时,向它的各个观察者发出通知。ConcreteObse原创 2020-06-27 17:31:05 · 226 阅读 · 0 评论 -
单例模式原理与C++实现
定义单例模式,即整个进程中只有一个该类的对象实例,不再有第二个实例,如一个班级只有一个班主任。单例模式有利于节省系统资源。单例类遵循以下设计原则:单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类必须给所有其他对象提供这一实例单例模式有饿汉和懒汉两种实现模式。饿汉模式class Singleton {private: static Singleton* obj; Singleton() {} //私有化构造函数 Singleton(const Singleton&)原创 2020-06-26 17:21:59 · 362 阅读 · 0 评论 -
抽象工厂模式原理与C++实现
定义抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。抽象工厂模式包含的角色有:抽象工厂:用于声明生产抽象产品的接口具体工厂:实现抽象工厂中生成抽象产品的方法,生成一系列具体产品。抽象产品:用于声明每种产品的接口具体产品:定义具体的产品,以及实现抽象产品中的接口方法C++实现#include <iostream>#include <memory>using namespace std;//抽象产品Aclass Abstract原创 2020-06-26 16:19:35 · 224 阅读 · 0 评论 -
工厂方法模式原理与C++实现
工厂方法模式在简单工厂方法模式中,如果我们需要添加新的需求(产品)时,那么就需要修改工厂类的方法,这显然违背了开放-封闭原则。而工厂方法模式可以避免这一点,因为该模式中每一个具体的产品都有一个对应的工厂类,也就是对于A产品,有一个创建A产品对象的A工厂,而对于B产品,则有一个B工厂。所以当需求增加时,只需要再增加一个产品类和对应的工厂类即可。C++实现#include <iostream>#include <memory>using namespace std;class原创 2020-06-26 15:26:36 · 161 阅读 · 0 评论 -
简单工厂模式原理与C++实现
为什么使用简单工厂模式?简单工厂模式的机制就是将一个个具有着相同功能,不同实现的类的对象创建过程放到一个工厂中来实现。这样做的好处就是,我们不需要再去考虑怎么创建一个对象,只需要调用工厂方法,并传入对象类型即可创建出我们想要的对象。从而有效降低模块之间的耦合。简单工厂模式实现#include <iostream>#include <memory>using namespace std;class Product {public: virtual void show(原创 2020-06-26 14:51:23 · 212 阅读 · 0 评论