
设计模式-简单
文章平均质量分 57
设计模式-简单
科学的发展-只不过是读大自然写的代码
科学的发展-只不过是读大自然写的代码
展开
-
坦克大战 设计模式 综合运用举例
坦克大战 设计模式 综合运用举例原创 2025-05-07 14:32:42 · 1273 阅读 · 0 评论 -
坦克大战用全创建型模式
坦克大战用全创建型模式原创 2024-11-11 10:35:32 · 1027 阅读 · 0 评论 -
备忘录模式简单实现
备忘录:说白了就是备份,然后还能恢复。下边的比较绕,知识谨慎型的做个产考,如果喜欢实践的,自己按照上面的类图实践一下就上面都懂了。动机:在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对象本身的封装性...原创 2019-03-01 10:20:05 · 432 阅读 · 0 评论 -
最简单的解释器模式
理解:一个被解释对象(Context),把该对象交给解释器,解释器(AbstractExpression)会对该对象的符号用相应的解释模型(XExpression)去解释。这个解释可能有点太抽象了,但是解释模式本身就是这些,而解释的过程往往会很负责,这个模式的难点,不在于模式本身,而在于模式的运用。上代码吧:(如果您觉得:这简单的有点过分了把,那么请看另一篇《解释模式简单实现》)#inclu...原创 2019-03-01 09:12:35 · 523 阅读 · 0 评论 -
解释器模式简单实现
关于该模式,我的理解也不太好,用一种简单的方式表达出来也有点困难,说以把官话的内容抄袭在了下面。我的理解:1.如果不去设计一门语言什么的,基本上不用学该模式。2.如果有兴趣,对该模式可以做简单的这么理解:一个被解释对象(Context),把该对象交给解释器,解释器(AbstractExpression)会对该对象的符号用相应的解释模型(XExpression)去解释。附加:对该解释模型的选...原创 2019-03-01 08:26:19 · 680 阅读 · 0 评论 -
迭代器模式简单实现
迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。这模式好多语言都已经变成类库了,这里我就不实现了,一般list都带一个迭代器。...原创 2019-02-27 15:13:24 · 886 阅读 · 0 评论 -
中介模式简单实现
中介者模式:就是对象间的访问通过中介者完成,也是加了一个中间层的模式。(与外观模式和代理模式可以对比学习,因为都是加了个中间层)价值吗?看下面的图就明白了,把对象间的关系都转变成对象和中介者(Mediator)的关系。先就说这些,我会再结合其他模式做一次对比分析,先抓住该模式的要点,一会在深入学习的时候就不会觉得空,任何新知识的补充都有地方可粘,要不然很容易出现学时候视乎明白了,过后又都忘记了...原创 2019-02-27 12:53:16 · 229 阅读 · 0 评论 -
代理模式简单实现
代理模式:就是用一个代理对象,来接请求,说白了就是加个中间层。价值:加个中间层有什么价值,该模式就有啥价值。你一定用过中间层把,那么你一定已经用过该模式了。中间层的价值:1.分散复杂度,2.隔离权限。。。。代码(c++)#include using namespace std;#include // 抽象层class Subject{public:virtual void R...原创 2019-02-27 10:25:01 · 387 阅读 · 0 评论 -
外观模式简单实现
外观模式:这个应该是一个架构模式,把一个模块的外部接口用一个外部类提供出去,对外部来说只有这个类(Facade)是可以访问的。代码(c++)#include using namespace std;#include // 抽象层class IFacade{public:virtual void funA()=0;virtual void funB()=0;virtual vo...原创 2019-02-27 10:00:08 · 412 阅读 · 0 评论 -
适配器模式简单实现
对象适配器类适配器适配模式:就解决调用接口(Request)和被调用接口(SpecificRequest)不匹配的问题,加一个适配器(Adapter)解决。代码(c++,对象适配器):#include using namespace std;#include // 抽象层class Target{public:virtual void Request()=0;};// ...原创 2019-02-27 09:36:15 · 423 阅读 · 1 评论 -
原型模式简单实现
原型模式:就是用拷贝的方式创建一个新的对象。模式价值:这个不太好说,我也没找到一个合适的例子来解释他的价值,如果真的有合适的需求这样做,那么你就知道他的价值了。现在你只需要知道拷贝一个新对象和创建一个新对象的差别就行了。(现在是学这个模式的第一阶段,知道这个模式的特点就行了)上代码:#include using namespace std;#include // 抽象层class ...原创 2019-02-27 08:38:43 · 651 阅读 · 0 评论 -
几种设计模式的对比分析
发上这个图是因为这个图是我学习过程中的一个产物,在我分析各种模式的相同点和不同点做的总结,用语言我说多了,把把您给说蒙了,但是当我能把模式用这张图表达出来的时候,我可以很自信的给出任何代码中那里用了什么模式,为什么说用了这种模式。对比总结是一种学习设计模式的一种好的方法,把某种模式中最重要的特性找出来,绝对是最快的学习方法。最少,最重要的。面向对象是设计模的关键,如果没有面向对象就没有设计模...原创 2019-02-26 14:25:38 · 965 阅读 · 0 评论 -
观察者模式简单实现-代码2
我这里实现了一对多的代码:个人意见:无论是一对多还是一对一,给模式的价值在于,被观察对象变化,可以自动的通知观察者,我这种状态关系编程一种稳定的依赖,两个对象间形成了一种稳定的依赖,那么实际上是降低了耦合度。这有点难理解:说得直白点就是,两个对象无论在发生什么样的变化,都不需要考虑对两个依赖的影响,他们俩的灵活性并未因这个稳定的依赖而降低。#include #include #inclu...原创 2019-02-26 13:21:19 · 969 阅读 · 0 评论 -
观察者模式简单实现
观察者模式:观察者(Observer)关心被观察者(Subject)的某个状态(subjectState),一旦状态变化,观察者就能收到通知(Notify),并更新自己的状态(observerState)。动机:在软件构建 过程中,我们需要为某些对象建立一种“通知依赖关系” 一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好...原创 2019-02-25 16:19:05 · 4081 阅读 · 0 评论 -
访问者模式简单实现
这个是一个复杂的模式,个人认为是设计中最复杂的模式。关于该模式我还会做如下1.其他模式做很多的对比分析(和观察者,和桥接)。2.从面相对象角度分析这个模式(这是一个把多态的特性用到极至的模式)不多说了:访问者模式:1.定义一个访问者(Visitor),在访问者内定义如下函数(VisitorConcreteElement(X)),该函数有一个输入参数(被访问者)该函数会根据访问者不同,执行...原创 2019-02-25 10:22:34 · 2744 阅读 · 2 评论 -
享元模式简单实现
享元模式:解:就是第一个创建的对象,后再次需要使用该对象时,就不需要创建了,直接只用就可以了。我的理解:批量的单实例。这个模式的价值分析起来比较复杂,我就不做太多说明了,我的原则是,你如果真的凭你的项目经验能够深刻的理解这种模式的价值,那么你就能很快的理解,如果不是这样我这里讲再多,你理解起来仍然不是很清楚,很可能会另你更糊涂。(我期初看了很多文章,都是这感觉)如下是抄袭来的(有兴趣的就看...原创 2019-02-25 09:35:03 · 428 阅读 · 0 评论 -
策略、状态、职责链、共同点和差异分析
总结:他们的共同特点就是将一个请求多态,差别就在于多态对象的切换不同1.策略有调用者选择策略这个相对简答2.状态模式呢是在执行的过程中要完成状态迁移3.职责链是永远有一个对象先接请求,处理不了就向后传递...原创 2019-02-22 08:27:16 · 337 阅读 · 0 评论 -
状态模式简单实现
状态模式:把一个不同状态有不同处理的逻辑,变成了如下处理流程。1.将某状态设为当前状态2.有当前状态执行某机能3.处理结束后设置状态(当前状态变更)#include #include using namespace std;// 抽象层class Context;class State{public:virtual void Handle(Context* c)=0;};...原创 2019-02-21 15:25:08 · 933 阅读 · 0 评论 -
策略模式简单实现
策略模式:就是有一个策略类,他有一个算法函数(AlgorithmInterface)可多态。他可供context选择(context调用他的算法函数(AlgorithmInterface)),代码(c++)#include using namespace std;#include // 抽象层class Strategy{public:virtual void Algorith...原创 2019-02-21 10:33:24 · 653 阅读 · 0 评论 -
命令模式最简单实现
命令模式:把一系列的函数,编程命令具体解释:把一系列的函数,用类封装起来,使用的时候通过调用,封装函数的类在调用函数,这样做有如何好处:好处(价值):函数可以被装载,使对该函数的调用更灵活。下面是代码(c++):#include #include using namespace std;// 抽象层class Invoker{public:int m_a;int m_b;...原创 2019-02-21 09:15:28 · 418 阅读 · 0 评论 -
模板模式简单实现
模板模式:在一个函数中调用一组抽象函数,这组抽象函数在子类中实现。价值就是:通过子类的实现使一个函数(TemplateMethod)的机能丰富。个人观点:这个模式其实就是一种最常用的面向对象手段,无论你是否学过设计模式,相信您一定用过,并且您如果看到过其他的模式,一定在其他的模式中发现过,比如创建者模式中创建者(Builder)用到的一系列创建方法,就是一个模板模式的原型。如下代码(c++...原创 2019-02-21 08:40:17 · 384 阅读 · 0 评论 -
创建者模式最简单实现
作用:如果你够着的对象有如下要求,应该这个模式就对了1.new之后需要有一系列的构造过程(BuildPart1,BuildPart2…BuildPartN)2.这个过程的创建过程可以有多态的变化(Builder)#include using namespace std;#include // 抽象层class Product{public:string m_part1;str...原创 2019-02-20 16:46:57 · 498 阅读 · 0 评论 -
最简单的抽象工厂模式
建议:先看工厂方法模式价值:有一系列工厂方法可以加工不同的商品。具体解释:在某个类(AbstractFactory)有一系列工厂方法(CreateProductA/CreateProductB)。该系列函数有如下2个要点:1.该函数可多态(即:包含该函数的类是多态的)2.该函数的返回值是多态的(Product)如下c++代码实现#include using namespace st...原创 2019-02-20 15:00:09 · 229 阅读 · 0 评论 -
工厂方法模式最简实现
价值:有一个工厂方法可以加工不同的商品。具体解释:在某个类(Creator)的工厂方法(FactoryMethod)能被多态成加工不同产品的方法。(如果有这么样的一个方法存在,那么就是实现了该模式,这是该模式的唯一特性)该模式有如下两个要点:1.该函数可多态(即:包含该函数的类是多态的)2.该函数的返回值是多态的(Product)如下代码实现(为了体现多态性,我把ConcreteCre...原创 2019-02-20 13:45:24 · 249 阅读 · 0 评论 -
单件模式(简单实现)
价值:保证只创建一个对象。如下是但示例模式的最简单实现:#include using namespace std;class A{public:};class B{public:A* a;B(){a = 0;}//如果你看得懂这函数,那么关于单实例的理解就够了//更丰富的情景,你都可以根据你的经历去体悟了A* getA(){if(0 == a){a = n...原创 2019-02-20 09:58:30 · 529 阅读 · 0 评论 -
最简设计模式
更开始学刚开始学习设计模式的时候,感觉很兴奋,这东西太好了。困惑当时学完后,不知道如何用。甚至自己用过了也不知道自己用过了。于是我想:学这东西到底有什么用呢,到底如何才算学会呢?领悟后来我明白了,其实设计模式只是面上对象应用的一些典型案例,模式的价值在于对面向对象属性的巧妙运用,如果你找到了每一种模式的巧妙之处,即每种模式都什么用的面向对象特性(继承,重载,多态)。建议其实如果想学...原创 2019-02-20 09:22:49 · 737 阅读 · 0 评论 -
最简单的装饰模式
特点:就是自己继承自己,在继承的过程中丰富自己。作用:1.通过继承丰富机能2.可以无限制的丰富机能(多维度的,与桥接相比桥接只有两个维度,这个模式和桥接相比就是可以桥接自己)https://download.csdn.net/download/xie__jin__cheng/10962740(这里由该模式的实践举例)https://download.csdn.net/download/xi...原创 2019-02-19 14:06:50 · 445 阅读 · 0 评论 -
桥接模式升级装饰模式的过程
目的:某个机能有两个维度的变化,那么把这个机能分别交给两个对象对负责,让他俩组合来完成任务。这样当构建丰富多彩的机能时,只需要更小的负责度就能实现。记录:这个模式其实本身是面向对象编程的基础,任何两个对象都可以发生桥接,那是不是发生了桥接就叫桥接模式呢。理论上这么说应该也没有问题,但桥接这么模式强调的时桥接后形成组合功能的丰富。https://download.csdn.net/my/upl...原创 2019-02-19 13:53:35 · 471 阅读 · 0 评论 -
最简单的理解组合模式
价值:把简单对象(leaf)和组合对象(Composite)都当成一种对象使用,对于使用者不需要关心他使用的对象是个简单对象还是复杂对象,就一样:你用就是了,就用一种方式(Operation)取用,至于对象本身的差别有我来完成(多态).就这一句话,如果你不能理解,那么也请被浪费时间,找更合适的资料去看。(建议加强一下对面向对象知识的深刻理解)...原创 2019-02-19 09:46:41 · 440 阅读 · 0 评论