
设计模式
文章平均质量分 94
一个程序员的修炼之路
顺势而为
展开
-
设计模式之桥梁模式
Bridge Pattern原创 2022-06-03 20:45:56 · 405 阅读 · 0 评论 -
里氏替换原则(LSP)
里氏替换原则(英文名为Liskov substitution principle,简称LSP)是由Barbara Liskov在1988年提出的,在Robert C. Martin提出的SOLID软件设计原则中的第二个字母L。挑出一个相对比较容易明白的定义:if S is a subtype of T, then objects of type T in a program may be replaced with objects of type S without altering any of t原创 2022-05-15 17:41:06 · 1658 阅读 · 0 评论 -
单一职责原则(SRP)
什么是单一职责原则单一职责原则(英文名为Single Responsibility Principle,简称SRP)是Robert C. Martin提出的SOLID软件设计原则中的第一个字母S。Robert C. Martin给出的定义为, 有且仅有一个原因导致类的变化。A class should have one, and only one, reason to change.而本人更偏向于Wiki上对SRP的描述, 其单一职责原则应该运用于模块, 类以及文件。The single-r原创 2022-05-01 16:14:19 · 5994 阅读 · 2 评论 -
设计模式之简单工厂,工厂方法和抽象工厂
在面向对象的编程中,一般通过继承和虚函数来提供抽象能力,多态让程序在执行期,调用者只需要看到父类类型,而不需要关心继承的子类类型。举个例子: 比如有个游戏,里面的游戏的活动对象为动物,比如有老虎和猫,会对主人公进行攻击。那么可能会实现为如下:代码如下:class Animal{public: virtual void Attack() = 0;};class Tiger : public Animal{public: virtual void Attack() { std::cout原创 2022-01-03 21:26:07 · 2892 阅读 · 0 评论 -
谈谈多例模式(multiton)的使用
之前的文章<<谈谈单例模式>>介绍过单例模式, 其全局只会生成一个实例化的对象。当初采用的是全局配置文件的实践案例, 因为比较适合采用单例模式。设计模式是前辈们通过丰富的工程实践后总结出的经验。所以笔者认为对于设计模式的理解,并不仅仅在于看懂这个模式的实现方式,更重要的是明白什么时候该使用什么设计模式,而要做到这个,离不开的是不断地实践。注意这里的实践,并不是说手写一遍设计模式的实现,而是多做一些项目,从项目中汲取经验,才能理解的更加深刻,变为自己能够灵活运用的知识。而本文也将从原创 2021-10-22 20:43:38 · 1305 阅读 · 0 评论 -
谈谈单例模式
单例模式是一个很常见的设计模式,也广泛应用于程序开发。其具有如下特点:一个类只有一个实例化对象全局可以使用那么有人要问,那我不就定义一个类,程序只初始化一个全局的实例就好了吗? 没错,这样是可以的。但是我们都知道程序会经过多人的接手维护和开发,比如第N个接手程序的时候,并不知道这个类定义的时候只能初始化一个实例,然后又实例化了新的对象, 则可能会造成意想不到的场景。那么这时候就要提到防御性编程,个人认为单例模式的实现也是防御性编程的一种方式,让这个类保证只有一个实例化对象,并且如果试图构造多个对象原创 2021-09-19 20:09:15 · 401 阅读 · 0 评论 -
对象池的使用场景以及自动回收技术
对象池在编程中,我们经常会涉及到对象的操作,而经常的操作模式如下图所示:创建对象->使用对象->销毁对象。而这个对象有可能创建的时候会需要构建很多资源,消耗比较大, 比如:在hiredis的SDK中每次都创建一个redisContext,如果需要查询,那就首先要进行网络连接。如果一直都是上图的工作方式,那将会频繁的创建连接,查询完毕后再释放连接。重新建立连接,让网络的查询效率降低。这个时候就可以构建一个对象池来重复利用这个对象,并且一般要做到线程安全:从对象池中获取对象,如果没有对象原创 2021-08-29 21:31:35 · 1278 阅读 · 0 评论