C++
文章平均质量分 50
qq_41871270
这个作者很懒,什么都没留下…
展开
-
设计模式笔记——策略模式
背景在软件构建过程中,某些对象使用的算法可能多种多样,常常会改变如果将这些算法都编码到对象中,将会使对象变得异常复杂,而且有使用支持不适用的算法也是一个性能负担问题如何在运行时更具需要透明地改变对象地算法,将算法和对象本身解耦,从而避免上述问题模式定义定义一系列算法,把他们封装起来,并且使他们可以相互替换,该模式使得算法可以独立于它的客户程序而变化。代码enum TaxBase{ CN_tax, US_tax, DE_tax};class Sa原创 2021-05-22 09:54:15 · 148 阅读 · 0 评论 -
设计模式笔记——模板模式
应用背景在软件构建中,对于某一项任务,常常有着稳定的整体操作结构,但是各个子步骤之间却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而不发和任务的整体结构同时实现那么如何在确定稳定操作结构的前提下,来灵活应对各个子步骤或者晚期实现需求。模式定义定义一个操作中的算法的骨架(稳定),而讲一些步骤延迟变化到子类中,模板模式可以使子类不改变(复用)一个算法的结构即可重定义该算法的某些特定步骤代码没有使用模板模式的代码如下class Template{public:原创 2021-05-21 13:09:00 · 143 阅读 · 0 评论 -
设计模式学习笔记——设计模式原则
注意:目前设计模式的笔记都是看李建忠老师的设计模式写的,老师讲的非常好,大家可以去看他的视频。面向对象的作用:抵御变化从宏观层而言,面向对象的方法可以将变化带来的影响减少最小从微观层而言,面向对象的方法可以使各个类各司其职面向对象的设计原则1.依赖倒置原则DIP: 高层(稳定)的模块不能依赖于底层(变化)的模块,两者应当都依赖于抽象(稳定) 抽象(稳定)的模块不应该依赖于实现细节(变化),实现细节应当依赖于抽象(稳定)2.开放封闭原则 对扩展开放,对更改封闭 ...原创 2021-05-21 10:34:45 · 124 阅读 · 0 评论 -
设计模式学习笔记——观察者模式
观察者模式使用场景:在软件构造中,需要为某些对象建立一种“通知依赖关系”,一个对象的状态如果发生变化,所有的依赖对象都将得到通知。如果这种依赖关系过于紧密,将导致软件不能很好的抵抗变化。而使用面向对象的方法可以将这种依赖关系弱化,并且形成一种稳定的依赖关系,从而实现软件体系结果的松耦合。观察者模式定义:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖与她的对象都得到通知并且自动更新现在假设我们需要完成一个功能:用进度条显示游戏加载了多少。我们有以下的函数.原创 2021-05-21 10:28:53 · 227 阅读 · 1 评论 -
设计模式学习笔记——接口隔离模式
接口隔离模式1.接口隔离模式介绍在组件构造过程中,某些接口之间直接依赖往往会带来很多问题,甚至无法实现。采用添加一层间接的稳定的结构来隔离本来互相紧密关联的接口是一种常见的解决方案。2.Façade门面模式2.1使用背景 组件中的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合将面临很多变化的挑战。2.2问题如何简化外部客户程序和系统间的交互接口?呼和将外部客户程序的演化与内部子程序的变化之间的依赖相互解耦。2.3解决方...原创 2021-05-17 14:22:58 · 214 阅读 · 0 评论 -
设计模式学习笔记——享元模式
使用场景 在软件系统采用存粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从来带来很高的运行时代价——主要指内存需求方面的代价。比如说有有个类叫MyChar,其作用是每个字都有它的字体类型,那如果以上述的情况,假设有一百万字,就会有100万个字体,且这100万个字体实例很多都是重复的,因为不可能说每个字的字体不一样,就以你妈妈叫你回家吃饭为例,可能”妈妈“是宋体,”叫你回家“是黑体,”吃饭“是等线,在这种情况下9个字生成了9个字体实例,但是实际上只有三种类型,即分别是宋体、黑体、等线...原创 2021-05-15 10:28:44 · 124 阅读 · 0 评论 -
设计模式学习笔记——单件模式
对象性能模式介绍 面向对象可以较好的解决抽象问题,但是面向抽象相比于面向过程会有额外的开销,虽然这种开销在大多数情况下都可以忽略不计。但是在某些情况下,面向对象造成的开销必须谨慎处理。23种设计模式种关于对象性能的设计模式有Singlton模式和Flyweight模式。单件模式(Singlton)使用场景 在程序中,有一些类只能有一个实例才能保证逻辑的正确性以及良好的效率,比如说数据库类,只能存在一个正在连接的实例,如果存在多个正在连接的实例则会导致数据库连接异常。或者在w...原创 2021-05-14 20:39:14 · 163 阅读 · 0 评论 -
200行的简易计算器(黑窗口)
// Project1.cpp: 定义控制台应用程序的入口点。///*表达式: 项目 项目“+”表达式 项目“-”表达式项目: 优先度 项目“*”优先级 项目“/”优先级 项目“%”优先级优先级: “(”表达式“)” 数字数字: double型 */#include "stdafx.h"#inc...原创 2018-09-03 11:44:58 · 364 阅读 · 0 评论