设计模式(C++)
描述了常见的设计模式
加浓美式好喝
when you fall down,just try again.
展开
-
建造者模式
【代码】建造者模式。原创 2024-04-21 11:57:39 · 360 阅读 · 0 评论 -
设计模式——装饰模式
该场景是针对一个英雄,通过增加装备以提高属性值。原创 2024-03-05 13:35:21 · 334 阅读 · 0 评论 -
设计模式——观察者模式
【代码】设计模式——观察者模式。原创 2024-03-05 11:51:37 · 350 阅读 · 0 评论 -
设计模式——命令模式
这个设计模式有点类似C/S模式,客户端向服务器发送指令,服务器要根据约定的协议做出相应的回应。原创 2024-03-04 20:41:01 · 554 阅读 · 0 评论 -
设计模式——模板方法模式
有两件事,一件事是煮饺子,另一件事是煮面条。煮饺子的步骤是烧开水,做汤,放饺子,煮面条类似:烧开水,做汤,放面条。原创 2024-03-04 16:07:43 · 475 阅读 · 0 评论 -
设计模式——外观模式
【代码】设计模式——外观模式。原创 2024-03-04 15:27:42 · 556 阅读 · 0 评论 -
设计模式——代理模式
代理模式就是给一个类的访问加上了权限设置。而这个权限审核的工作又由一个代理的类来完成。代理的类和实际你想访问的类是相似的,你访问代理的类就好像访问了实际的类。所以这两类之间需要一种共同的数据,所以代理类里面有真正类的成员变量,用以访问真正类里面的方法。原创 2024-03-04 14:03:45 · 570 阅读 · 0 评论 -
设计模式——单例模式
6.Garbo是垃圾回收类,当garbo对象出了作用域调用析构函数释放时,会顺带释放单例对象的资源。当然这个操作不是必要的,毕竟所占内存也特别小。5.饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变,懒汉式不一定。2.把成员私有,避免类外直接对该静态成员进行赋值或者其他操作。3.把成员写成静态是因为静态成员每个类只存在一份,保证了单例。4.饿汉模式直接创建对象,该行为发生在main函数创建之前。1.把构造函数私有,是避免类外进行创建该对象。原创 2024-03-04 13:00:28 · 1599 阅读 · 0 评论 -
设计模式——工厂模式
工厂模式的意义是为了简化用户创建某个对象的过程,假设一个对象创建需要经过读文件,解析文件,设置参数,创建对象等复杂的步骤。注意:如果增加了一个产品族,那么会影响到整个代码的编写,如果只是增加一个产品等级,那么只需要再添加代码即可。该模式符合开闭原则。一个工厂类对应一个singer派生类,分别创建对应的对象。但是这样会使工厂类数量增大。但是以上模式不符合开闭原则, 当新增singer派生类的时候,就需要修改工厂内的源码。提供一个产品类的库,所有的产品以同样的接口出现,从而使得客户端不依赖于具体的实现。原创 2024-03-03 22:48:37 · 538 阅读 · 0 评论 -
设计模式——依赖倒转原则
但是抽象不应该依赖细节,细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并且能够降低修改程序所造成的风险。举个例子:当工人的方法被新增 了一项,那么首先需要修改worker类的代码。并且要新增一个函数去调用对应的方法。那么是非常复杂的,因为这是高耦合的代码,如果出现错误了,就会牵一发而动全身。如果采用了如下的方法,那么当新增方法时,直接新写一个类继承自抽象类worker即可。原创 2024-03-03 17:26:07 · 588 阅读 · 0 评论 -
设计模式——合成复用原则
人和车的关系按以上代码而言是设计成了继承的关系。原创 2024-03-03 16:30:40 · 579 阅读 · 0 评论 -
设计模式——迪米特法则
如果其中一个类需要调用另一类的某一个方法的话,可以通过第三者转发这个调用。广义的迪米特法则:一个模块设计的好坏的一个重要标志就是该模块在多大程度上讲自己的内部数据与实现的有关细节隐藏起来。但是这样设计不是最佳。因为定义一个对象应该对其他对象保持最少的了解。原创 2024-03-03 16:03:22 · 590 阅读 · 0 评论 -
设计模式——开闭原则
但是这段代码存在问题:如果想对该计算器类增添新的功能,比如说取余或者开方等等。那么就需要修改函数内的代码,这样就导致了一个问题:我们在修改代码的时候可能会出错,导致一系列后果,这就是所谓的高耦合。但是我们想到的是低耦合的代码。所以可以将不同的运算分别写在一个类中。原创 2024-03-03 14:48:55 · 642 阅读 · 0 评论