设计模式
文章平均质量分 60
贪心的鬼
孤独作酒
展开
-
C++ 单例模式
单例模式:类只有一个实例,且全局可访问。单例模式中最大的缺陷就是线程安全与判断的开销。定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。唯一实例类Singleton在静态成员函数中隐藏创建实例的操作。习惯上把这个成员函数叫做Instance(),它的返回值是唯一实例的指针。...原创 2022-08-22 11:06:37 · 536 阅读 · 0 评论 -
设计模式——外观模式
外观模式 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。 何时使用: 1、客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 2、定义系统的入口。 如何解决:客户端不与系统耦合,外观类与系统耦合。 关键代码:在客户端和复杂系统之间再加一层,这一层将调用顺序、依原创 2021-08-24 14:10:31 · 123 阅读 · 0 评论 -
设计模式——模板方法模式
文章目录模板方法模式AbstractClass类ConcreteClass类客户端调用大话设计模式例子实现参考 模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法通用,却在每一个子类都重新写了这一方法。 如何解决:将这些通用算法抽象出来。 关键代码:在抽象类实现,其他步骤在子类实现。 应用实例: 1、在原创 2021-08-24 13:18:19 · 226 阅读 · 0 评论 -
工厂模式(C++实现)
1 工厂模式 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法让一个类的实例化延迟到其子类 2 简单工厂模式实现加减乘除 简单工厂模式:其最大优点在于工厂类包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖 简单工厂模式实现计算机的加减乘除: 简单工厂类的实现 class OperatorFactory{ public: Abstra原创 2021-08-21 13:07:45 · 1306 阅读 · 0 评论 -
代理模式——大话设计模式C++实现
代理模式: 代理就是真实对象的代理 应用场合 远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实 虚拟代理:是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象(浏览器中优化下载图片) 安全代理:用来控制真实对象访问时的权限 智能索引:指调用真实的对象时,代理处理另外一些事情。如计算机真实对象的所以次数,这样当该对象没有引用时,可以自动释放它;或当第一次引用一个持久对象时,将它装入内存;或在访问一个实际对象之前,检查是否已经锁定它,以确保其原创 2021-08-21 12:04:47 · 163 阅读 · 0 评论 -
装饰模式(大话设计模式例子C++实现)
装饰模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。比如有一个手机,允许你为手机添加特性,比如增加挂件、屏幕贴膜等。一种灵活的设计方式是,将手机嵌入到另一对象中,由这个对象完成特性的添加,我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。下面给出装饰模式的UML图。 ———————————————— 在这种设计中,手机的装饰功能被独立出来,可以单独发展,进而简化了具体手机类的设计原创 2021-08-21 10:05:38 · 246 阅读 · 0 评论 -
用简单工厂模式实现计算机的加减乘除(C++实现)
考虑用一个单独的类来做这个创造实例(变化)的过程,这就是工厂 #include <iostream> #include <string.h> using namespace std; //实现计算机抽象类 class AbstractCalculator{ public: virtual ~AbstractCalculator(){ } virtual double getResult(){ return 0; } doub原创 2021-08-18 20:08:55 · 462 阅读 · 0 评论 -
面向对象设计原则
面向对象设计原则面向对象设计原则0 重新认识面向对象1 依赖倒置原则(DIP)2 开放封闭原则(OCP)3 单一职责原则(SRP)4 Liskov替换原则(LSP)5 接口隔离原则(ISP)6 优先使用对象组合,而不是类继承7 封装变化点8 针对接口编程,而不是针对实现编程 面向对象设计原则 可复用以抵御变化 0 重新认识面向对象 理解隔离变化 从宏观上看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响减为最小 各司其职 微观上凯南,面向对象的方式更强调各个类的“责任” 由于需求变化导转载 2021-08-17 16:54:09 · 76 阅读 · 0 评论