
设计模式
文章平均质量分 83
zhcblog
从事云计算分布式存储相关工作
展开
-
面试经常被问的单例模式到底长啥样
饿汉式和懒汉式 单例模式书中的官方定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问节点。 解释:就是一个类除了实例化一个对象之外保证没有其他实例化可以被创建,并且它可以提供一个访问该实例的方法。 所以我们可以明确知道单例模式就是一个类,但这个类有点特殊,特殊在他只能创建一个实例,而对外就是提供一个外界可以访问的实例化方法。 但是我们如何保证让它只能实例化一个对象呢?可以看看下面这样一个代码。 // 懒汉式 class Single { private: Single() { } //原创 2020-05-18 18:28:11 · 352 阅读 · 0 评论 -
常用设计模式之单例模式
这里声明了一个Single的单例类,类中有两个与其它类不同的地方,一个就是它的构造函数是私有的,这样做的目的就是防止外界调用构造函数,而只要外界不能调用构造函数那么就不能对该类进行实例化(类内可以访问私有的构造函数所以只能类内实例化)。:某些情况下,造成内存浪费,因为对象未被使用的情况下就会被初始化,如果一个项目中的类多达上千个,在项目启动的时候便开始初始化可能并不是我们想要的。的时候确保当前的对象时没有被实例过的,因为上锁操作对性能是有影响的,所以这里会有一个双重的判定。而这只是单例类的一种懒汉式写法。原创 2023-06-06 17:56:30 · 624 阅读 · 0 评论 -
抽象工厂学习总结(全面)
工厂模式介绍 工厂模式分为简单工厂模式、工厂方法模式 和 抽象工厂模式三类 简单工厂 VS 工厂方法 这里通过实现一个计算器例子来了解简单工厂和工厂方法模式 简单工厂模式的计算器实现 #include <iostream> using namespace std; class CalBase { public: double num1; double num2; public: virtual double cal() = 0; }; class Add : public CalBas原创 2020-05-23 13:24:05 · 1286 阅读 · 0 评论 -
模板方法模式学习总结
模板方法模式介绍 模板方法模式定义: 定义一个操作中的算法的骨架,而将一些多变的步骤延迟到子类中实现,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 解释:对于一个类,把类中多变的部分和不变的部分分离开来,将多变的部分延迟到子类去实现,不变的部分封装在基类中。 优点: 封装不变部分,扩展可变部分。 提取公共代码,便于维护。 行为由父类控制,子类实现。 缺点: 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。 使用场景: 对于base class 有原创 2020-05-21 22:45:45 · 423 阅读 · 0 评论 -
策略模式实现和总结
策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。原创 2020-05-20 15:56:37 · 535 阅读 · 0 评论 -
代理模式学习总结
代理模式定义 代理模式的定义: 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 代理模式的优点: 代理模式在客户端与目标对象之间起到一个中介和保护目标对象的作用; 代理对象可以扩展目标对象的功能; 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度; 代理模式的缺点: 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢; 增加了系统的复杂度; 代理模式的结原创 2020-05-19 18:23:13 · 339 阅读 · 0 评论