
设计模式
文章平均质量分 59
搭建好自己高质量的代码基础
z_stand
远离颠倒梦想,究竟涅槃
展开
-
关于 Rocksdb 的 EnvWrapper 作用的小讨论
有了Env 这个抽象类,为什么多出来一个 EnvWrapper 这个原封不动重写Env 方法 的Env 子类?原创 2021-10-27 22:14:24 · 1102 阅读 · 2 评论 -
设计模式 之美 -- 策略模式
策略模式作为行为型设计模式中的一种,主要封装相同功能的不同实现算法,用于在用户程序内部灵活切换。对用户来说能够快速替换对应的算法,能够让算法的实现独立于使用的用户。基本的UML类图如下:用户使用Stratey的实例能够快速得在不同的Cache算法之间灵活切换(直接使用对应的Cache实例来设置到Strategy之中即可。),而不用关注具体的算法实现。#include <iostream>#include <string>using namespace std;cla原创 2020-09-30 19:15:27 · 322 阅读 · 0 评论 -
设计模式 之美 -- 代理模式
文章目录1. 解决问题2. 应用场景1. 业务系统的非功能性开发2. 代理模式在RPC、缓存中的应用3. 实现C++实现C语言实现1. 解决问题客户端和目标对象之间需要进行交互,此时客户端类和目标对象类相关操作之间的逻辑如果交合在一起,会导致客户端和目标对象模块耦合度升高,后期扩展客户端的功能时,则需要修改两者的源代码。这样的架构设计在系统更加庞大(网络通信链路庞杂,功能增删频繁)的场景下,...原创 2020-04-26 21:41:20 · 266 阅读 · 0 评论 -
设计模式 之美 -- 原型模式
文章目录1. 解决问题2. 应用场景3. 实现方式C++实现C语言实现4. 缺点5. 和其他三种创建模式的对比(单例,工厂,建造者)1. 解决问题如果对象的创建成本较大,而同一个类的不同对象之间的差别不大(大部分字段相同),在这种情况下,我们可以利用已有对象(原型)进行赋值(拷贝)的方式,创建新的对象,从而达到节省对象创建时间的目的。2. 应用场景需要在运行过程中,动态的拷贝一份对象需...原创 2020-04-24 21:18:09 · 272 阅读 · 0 评论 -
设计模式 之美 -- 建造者模式
文章目录1. 解决问题2. 应用场景3. 实现C语言实现C++实现4. 缺点1. 解决问题描述如下场景:类的数据成员很多(8个以上),当我们进行初始化的时候放在初始化列表中,影响类的可读性,同时校验初始化参数列表是否有效的逻辑也无处放置假如初始化列表中的参数有一定的依赖关系,比如数据成员max 一定比 数据成员min 小才行,这样的依赖关系设置逻辑无处安放(需要在类实例化的时候就要完成依...原创 2020-04-22 23:10:59 · 257 阅读 · 0 评论 -
编程模式 之美 -- 抽象工厂模式
文章目录1. 解决问题2. 应用场景3. 实现如下:C++实现C语言实现4. 缺点1. 解决问题在工厂方法模式中,我们卖衣服。此时我们为每一种衣服创建不同的工厂,帽子有一个工厂专门创建,裤子有一个工厂专门创建,T恤有一个工厂专门创建。这样的方式保证了代码设计的开闭原则(对扩展开发,对修改关闭),解决了简单工厂模式中暴露的问题。但是又凸显了新的问题,假如现在优衣库这个大工厂 里面需要生产不同的...原创 2020-04-21 23:07:50 · 393 阅读 · 0 评论 -
设计模式 之美 -- 工厂方法模式
文章目录1. 解决问题2. 应用场景3. 实现如下C++实现C语言实现4. 缺点1. 解决问题在简单工厂模式中,我们使用卖衣服进行举例,同一种工厂可以卖很多不同种类的衣服,工厂只是将衣服的生产过程进行了封装。当我们增加衣服种类的时候,在简单工厂模式中需要对修改工厂的代码,破坏了类的开闭原则(对扩展开发, 对修改关闭),同时增加测试成本。此时为了避免这种问题的出现,我们推出工厂方法模式,为每...原创 2020-04-20 23:01:30 · 308 阅读 · 0 评论 -
设计模式 之美 -- 简单工厂模式
文章目录1. 解决问题2. 应用场景3. 实现C++实现:C语言实现4. 缺点1. 解决问题举例如下:我们实现一个卖衣服的功能,衣服的种类有很多:帽子,裤子,T恤。。。 每卖一种衣服,我们都要进行一次实例化,通过new/malloc申请空间,会有如下两种问题:new /malloc之后往往需要跟随一堆异常处理代码,当衣服种类越来越多,我们的代码会显得异常臃肿。当新的服务员来到商店,他想...原创 2020-04-16 23:10:32 · 319 阅读 · 0 评论 -
设计模式 之美 -- 单例模式
为什么要使用单例?一个类只允许创建一个对象或者实例。背景简介:使用多线程并发访问同一个类,为了保证类的线程安全,可以有两种方法:将该类定义为单例模式,即该类仅允许创建一个实例为该类的成员函数添加类级别的锁举例:一个向指定文件写入日志的类,为了保证该类并发调用时写入文件的日志不会覆盖,需执行以上操作。单例模式的几种经典的实现方式:饿汉式在类的加载期间,将静态实例初始化好...原创 2020-04-13 22:42:36 · 356 阅读 · 0 评论 -
设计模式 之美 -- 面向对象(C/C++分别实现)
前言为了保证代码的可复用性、可扩展性、可维护性,我们提出了面向对象的思想。面向对象的核心特性有以下几个封装特性信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。封装用来提升代码的可扩展性、可维护性继承特性继承是用来表示类之间的 is-a 关系,分为两种模式:单继承和多继承。单继承表示一个子类只继承一个父类,多继承表示一个子类可以...原创 2020-04-11 09:33:23 · 388 阅读 · 0 评论 -
设计模式 之美 --- 初篇
接下来的一段时间将按照如下导图,对23种设计模式 按照自己的理解一一做一个总结,为后续工作中持续灵活使用做好铺垫。学习应用 设计模式的过程有如下好处提高复杂代码的设计开发能力让阅读源码 和 学习框架事半功倍告别被别人吐槽的烂代码为职场发展做铺垫应对面试中设计模式的相关问题希望大家也能够重视设计模式,写出高质量的优雅代码!...原创 2020-04-05 16:01:06 · 297 阅读 · 2 评论