C++设计模式
文章平均质量分 75
C++设计模式学习笔记
Liang-Wen-Hao
伪装成程序员的菜鸟
展开
-
22_ChainOfResposibility职责链-学习笔记
C++设计模式-李建忠22-Chain of Resposibility 职责链1. “数据结构”模式常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。典型模式CompositeIteratorChain of Resposibility2. 动机(Motivation)在软件构建过程中,一个请求可能..原创 2021-04-14 09:42:50 · 153 阅读 · 1 评论 -
12_Singleton单件模式-学习笔记
C++设计模式-李建忠12-Singleton 单件模式1. “对象性能”模式面向对象很好地解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理。典型模式SingletonFlyweight2. 动机(Motivation)在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制..原创 2021-04-11 22:30:56 · 153 阅读 · 0 评论 -
09_AbstractFactory_抽象工厂-学习笔记
C++设计模式-李建忠09-Abstract Factory 抽象工厂1. 对象创建”模式通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式Factory MethodAbstract FactoryPrototypeBuilder2. 动机(Motivation)在软件系统中,经常面临着 “一系列相互依赖的对象” 的创建工作;同时,由于需求的变化,往往存在更多..原创 2021-04-11 22:29:03 · 91 阅读 · 0 评论 -
08_FactoryMethod工厂方法-学习笔记
08-FactoryMethod工厂方法1. “对象创建”模式通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式Factory MethodAbstract FactoryPrototypeBuilder2. 动机(Motivation)在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?如何绕过常规的对.原创 2021-04-11 22:24:37 · 133 阅读 · 0 评论 -
07_Bridge桥模式
Bridge“单一职责”模式:在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。典型模式DecoratorBridge动机(Motivation)由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个纬度的变化。如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度?代码1.代码1//-----------原创 2021-04-11 22:22:06 · 86 阅读 · 0 评论 -
06_Decorator装饰模式
Decorator装饰.模式“单一职责”模式:在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。典型模式DecoratorBridge动机(Motivation)在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展原创 2021-04-11 22:18:33 · 97 阅读 · 0 评论 -
05_Observer观察者模式-学习笔记
C++设计模式整理自李建忠老师的《C++设计模式》视频教程Observer观察者模式(常用)(组件协作模式)“组件协作”模式:现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。典型模式Template MethodStrategyObserver / Event1. 动机(Motivation)在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”:一个对象(目标原创 2021-04-11 22:06:42 · 111 阅读 · 0 评论 -
04_Strategy策略模式_笔记
C++设计模式整理自李建忠老师的《C++设计模式》视频教程“组件协作”模式:现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。典型模式Template MethodStrategyObserver / Event04_Strategy策略模式(组件协作模式)1.动机(Motivation)在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编.原创 2021-04-11 21:58:59 · 86 阅读 · 0 评论 -
03_TemplateMethod-笔记
C++设计模式整理自李建忠老师的《C++设计模式》视频教程GOF-23 模式分类从目的来看:创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。行为型(Behavioral)模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。从范围来看:类..原创 2021-04-11 21:48:53 · 117 阅读 · 0 评论 -
02_面向对象设计原则-学习笔记
C++设计模式整理自李建忠老师的《C++设计模式》视频教程02-面向对象设计原则面向对象设计,为什么?变化是复用的天敌!面向对象设计最大的优势在于:抵御变化!重新认识面向对象理解隔离变化从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响减为最小各司其职从微观层面来看,面向对象的方式更强调各个类的“责任”由于需求变化导致的新增类型不应该影响原来类型的实现——是所谓各负其责对象是什么?从语言实现层面来看,对象封装了代码和数据。从原创 2021-04-11 21:41:04 · 90 阅读 · 0 评论 -
01-设计模式简介-学习笔记
C++设计模式整理自李建忠老师的《C++设计模式》视频教程01-设计模式简介课程目标理解松耦合设计思想掌握面向对象设计原则掌握重构技法改善设计掌握GOF核心设计模式什么是设计模式“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。——Christopher AlexanderGOF 设计模式历史性著作《设计模式:可复用面向对象软件的基础》一书中描述了23种经典面向对象设计模式,创立了模原创 2021-04-11 21:31:51 · 116 阅读 · 0 评论 -
C++设计模式-学习笔记
目录C++设计模式-李建忠Observer 观察者模式1. “组件协作”模式:2. 动机(Motivation)3. 模式定义4. 结构(Structure)5. 需要改进的C++伪代码6. 改进后的C++伪代码7. 要点总结Factory Method工厂方法1. “对象创建”模式2. 动机(Motivation)3. 模式定义4. 结构(Structure)5. 需要改进的C++伪代码6. 改进后的C++伪代码7.要点总结Abstract Factory 抽象工厂1. 对象创建”模式2. 动机(Moti原创 2021-01-15 21:56:53 · 416 阅读 · 0 评论