C++设计模式
C++设计模式
MatsumotoChrikk
这个作者很懒,什么都没留下…
展开
-
C++装饰模式Decorator
继承子一个父类Stream,里面又有个字段也叫Stream,绝大多数都是Decorator模式,(这是同时继承,同时组合)eg:一个流操作的代码(实际网络流的加密,文件流的加密,内存流的加密)加密操作都是一样的,但是流是不一样的。解决方法:**Decorator:**动态(组合)地给一个对象增加一些额外的职责。单一职责(如果责任不清晰,子类会急剧膨胀,而且重复代码,这时候就得划分单一的责任)总结:过度的使用继承,导致大量重复代码,子类急剧膨胀。原因是:对继承的不良使用导致的。上述eg的问题在于:子类的。原创 2024-08-21 11:02:55 · 33 阅读 · 0 评论 -
C++观察者模式Observer
但是如果文件太大了,我想分割,想要一个进度条。依赖倒置原则:高层模块不能依赖底层模块。是不是找filesplitter的父类就可以了呢?eg:做一个文件分割器,需要一个界面mainform。里面有文件路径,文件号。直接写一个IProgress类当抽象接口,然后多继承,然后重写、调用。只要这个对象状态发生改变,观察者对象都能得到通知。上图,从绿色到黑色。从不良耦合到良好耦合。Bar实际上就是一种通知,不需要一种。但是依赖关系要松耦合,不要太依赖。Bar上述这样就不可以,因为。了,这样是违背依赖倒置的。原创 2024-08-21 10:06:07 · 56 阅读 · 0 评论 -
C++策略模式Strategy
这样是:一段代码,又添上代码,前面的很可能出bug,这都不叫复用。不同于if else,(bad smell、还占用缓存)只要有if else就应该要想strategy重构。真正的复用,直接编译级复用。(strategy)但是如果if else绝对不变的情况,也可以用。现在可以弄个基类,几个派生类。(if else else)稳定的是红色,不稳定是蓝色。—策略模式strategy。各国的税,少了哪国就得。原创 2024-08-20 22:06:15 · 304 阅读 · 0 评论 -
C++模板方法TemplateMethod
23种设计模式分为九类1.组件协作2.单一职责3.对象创建4.对象性能5.接口隔离6.状态变化7.数据结构8.行为变化9.领域问题什么时候、什么地点用设计模式才是最重要的。关键的重构技法:静态-----动态早绑定—晚绑定继承-----组合编译时依赖------运行时依赖紧耦合----松耦合组件协作:通过晚期绑定,实现松耦合(就是用于协作)典型模式:模板方法template method(用早的库调用晚的应用,稳定中可以存在变化,稳定的写成非虚就行,必须要有稳定的东原创 2024-08-20 21:42:06 · 354 阅读 · 0 评论 -
C++设计原则
以前特别推崇类继承,但是这个是错误的,汽车可以继承于交通工具。例如在mainform就弄三个数据结构存东西,不太行。mainform依赖于shape,line和rect依赖shape。接口就应该小,而且完备,只做有必要的进public。mainform依赖line和rect这是不对的。变化就是类的责任,一个类一个责任。想着增加东西,而不是修改原有的。一个类仅有一个引起他变化的原因。对扩展是开放的,对更改是封闭的。封装的两侧,一侧变化,一侧稳定。针对接口编程,而不是针对实现。不然就是和父类没关系的。原创 2024-08-20 20:54:44 · 51 阅读 · 0 评论 -
C++设计模式简介
如果是第二种做法,一样也得写一个circle类,但是可以继承于shape父类,override一下自己的draw,第二种写法不用改变只有一个数据结构vector存shape。如果是第一种分而治之的思想,那么还得写个数据结构存circle,之后的实现也得写出来circle。针对圆形,还得具体实现。(半径、圆心等等)(很小的需求,要改的超级多)如何使用面向对象的机制来表达现实世界,这是最好的。每一个模式都描述了重复的问题,和解决的方案,所以就可以直接使用模式,而不是造轮子。引入了客户需求的变化,圆形怎么画?原创 2024-08-20 11:30:37 · 123 阅读 · 0 评论