- 博客(29)
- 资源 (33)
- 问答 (1)
- 收藏
- 关注
原创 最简设计模式
更开始学刚开始学习设计模式的时候,感觉很兴奋,这东西太好了。困惑当时学完后,不知道如何用。甚至自己用过了也不知道自己用过了。于是我想:学这东西到底有什么用呢,到底如何才算学会呢?领悟后来我明白了,其实设计模式只是面上对象应用的一些典型案例,模式的价值在于对面向对象属性的巧妙运用,如果你找到了每一种模式的巧妙之处,即每种模式都什么用的面向对象特性(继承,重载,多态)。建议其实如果想学...
2019-02-20 09:22:49 637
原创 迭代器模式简单实现
迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。这模式好多语言都已经变成类库了,这里我就不实现了,一般list都带一个迭代器。...
2019-02-27 15:13:24 849
原创 中介模式简单实现
中介者模式:就是对象间的访问通过中介者完成,也是加了一个中间层的模式。(与外观模式和代理模式可以对比学习,因为都是加了个中间层)价值吗?看下面的图就明白了,把对象间的关系都转变成对象和中介者(Mediator)的关系。先就说这些,我会再结合其他模式做一次对比分析,先抓住该模式的要点,一会在深入学习的时候就不会觉得空,任何新知识的补充都有地方可粘,要不然很容易出现学时候视乎明白了,过后又都忘记了...
2019-02-27 12:53:16 198
原创 代理模式简单实现
代理模式:就是用一个代理对象,来接请求,说白了就是加个中间层。价值:加个中间层有什么价值,该模式就有啥价值。你一定用过中间层把,那么你一定已经用过该模式了。中间层的价值:1.分散复杂度,2.隔离权限。。。。代码(c++)#include using namespace std;#include // 抽象层class Subject{public:virtual void R...
2019-02-27 10:25:01 360
原创 外观模式简单实现
外观模式:这个应该是一个架构模式,把一个模块的外部接口用一个外部类提供出去,对外部来说只有这个类(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 376
原创 适配器模式简单实现
对象适配器类适配器适配模式:就解决调用接口(Request)和被调用接口(SpecificRequest)不匹配的问题,加一个适配器(Adapter)解决。代码(c++,对象适配器):#include using namespace std;#include // 抽象层class Target{public:virtual void Request()=0;};// ...
2019-02-27 09:36:15 369
原创 原型模式简单实现
原型模式:就是用拷贝的方式创建一个新的对象。模式价值:这个不太好说,我也没找到一个合适的例子来解释他的价值,如果真的有合适的需求这样做,那么你就知道他的价值了。现在你只需要知道拷贝一个新对象和创建一个新对象的差别就行了。(现在是学这个模式的第一阶段,知道这个模式的特点就行了)上代码:#include using namespace std;#include // 抽象层class ...
2019-02-27 08:38:43 606
原创 几种设计模式的对比分析
发上这个图是因为这个图是我学习过程中的一个产物,在我分析各种模式的相同点和不同点做的总结,用语言我说多了,把把您给说蒙了,但是当我能把模式用这张图表达出来的时候,我可以很自信的给出任何代码中那里用了什么模式,为什么说用了这种模式。对比总结是一种学习设计模式的一种好的方法,把某种模式中最重要的特性找出来,绝对是最快的学习方法。最少,最重要的。面向对象是设计模的关键,如果没有面向对象就没有设计模...
2019-02-26 14:25:38 906
原创 观察者模式简单实现-代码2
我这里实现了一对多的代码:个人意见:无论是一对多还是一对一,给模式的价值在于,被观察对象变化,可以自动的通知观察者,我这种状态关系编程一种稳定的依赖,两个对象间形成了一种稳定的依赖,那么实际上是降低了耦合度。这有点难理解:说得直白点就是,两个对象无论在发生什么样的变化,都不需要考虑对两个依赖的影响,他们俩的灵活性并未因这个稳定的依赖而降低。#include #include #inclu...
2019-02-26 13:21:19 930
原创 观察者模式简单实现
观察者模式:观察者(Observer)关心被观察者(Subject)的某个状态(subjectState),一旦状态变化,观察者就能收到通知(Notify),并更新自己的状态(observerState)。动机:在软件构建 过程中,我们需要为某些对象建立一种“通知依赖关系” 一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好...
2019-02-25 16:19:05 4044
原创 访问者模式简单实现
这个是一个复杂的模式,个人认为是设计中最复杂的模式。关于该模式我还会做如下1.其他模式做很多的对比分析(和观察者,和桥接)。2.从面相对象角度分析这个模式(这是一个把多态的特性用到极至的模式)不多说了:访问者模式:1.定义一个访问者(Visitor),在访问者内定义如下函数(VisitorConcreteElement(X)),该函数有一个输入参数(被访问者)该函数会根据访问者不同,执行...
2019-02-25 10:22:34 2688 2
原创 享元模式简单实现
享元模式:解:就是第一个创建的对象,后再次需要使用该对象时,就不需要创建了,直接只用就可以了。我的理解:批量的单实例。这个模式的价值分析起来比较复杂,我就不做太多说明了,我的原则是,你如果真的凭你的项目经验能够深刻的理解这种模式的价值,那么你就能很快的理解,如果不是这样我这里讲再多,你理解起来仍然不是很清楚,很可能会另你更糊涂。(我期初看了很多文章,都是这感觉)如下是抄袭来的(有兴趣的就看...
2019-02-25 09:35:03 380
原创 人工智能 创造力 模糊
人工智能,是啥,科幻世界真的离我们越来越近了。说的人工智能,就不能说学习,说机器学习,那么机器为什么能够学习呢。那么什么意义算是机器学习呢,最起码是有一定成创造的,也就是会产生新的知识(这叫知识可能不太准确)。比如根据大量的已知数据,推断出一个位置可能要发生的结果,这就是我刚才说我的知识。这知识不一定是准确的,但是是发生几率最大的。我很早就相关,智慧的本质到底是什么?我怎么也想不出,人是...
2019-02-22 10:06:42 5031
原创 策略、状态、职责链、共同点和差异分析
总结:他们的共同特点就是将一个请求多态,差别就在于多态对象的切换不同1.策略有调用者选择策略这个相对简答2.状态模式呢是在执行的过程中要完成状态迁移3.职责链是永远有一个对象先接请求,处理不了就向后传递...
2019-02-22 08:27:16 282
原创 状态模式简单实现
状态模式:把一个不同状态有不同处理的逻辑,变成了如下处理流程。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 892
原创 策略模式简单实现
策略模式:就是有一个策略类,他有一个算法函数(AlgorithmInterface)可多态。他可供context选择(context调用他的算法函数(AlgorithmInterface)),代码(c++)#include using namespace std;#include // 抽象层class Strategy{public:virtual void Algorith...
2019-02-21 10:33:24 613
原创 职责连模式简单实现
职责链:就是处理问题的类有一个处理问题的级别,问题(函数调用)都先发给低级别的类,如果解决不了,就向上级类传递。代码(c++)#include #include using namespace std;//////////////////////////////////////////////////////////////////////////// ----------------...
2019-02-21 09:29:39 265
原创 命令模式最简单实现
命令模式:把一系列的函数,编程命令具体解释:把一系列的函数,用类封装起来,使用的时候通过调用,封装函数的类在调用函数,这样做有如何好处:好处(价值):函数可以被装载,使对该函数的调用更灵活。下面是代码(c++):#include #include using namespace std;// 抽象层class Invoker{public:int m_a;int m_b;...
2019-02-21 09:15:28 398
原创 模板模式简单实现
模板模式:在一个函数中调用一组抽象函数,这组抽象函数在子类中实现。价值就是:通过子类的实现使一个函数(TemplateMethod)的机能丰富。个人观点:这个模式其实就是一种最常用的面向对象手段,无论你是否学过设计模式,相信您一定用过,并且您如果看到过其他的模式,一定在其他的模式中发现过,比如创建者模式中创建者(Builder)用到的一系列创建方法,就是一个模板模式的原型。如下代码(c++...
2019-02-21 08:40:17 353
原创 创建者模式最简单实现
作用:如果你够着的对象有如下要求,应该这个模式就对了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 458
原创 最简单的抽象工厂模式
建议:先看工厂方法模式价值:有一系列工厂方法可以加工不同的商品。具体解释:在某个类(AbstractFactory)有一系列工厂方法(CreateProductA/CreateProductB)。该系列函数有如下2个要点:1.该函数可多态(即:包含该函数的类是多态的)2.该函数的返回值是多态的(Product)如下c++代码实现#include using namespace st...
2019-02-20 15:00:09 194
原创 工厂方法模式最简实现
价值:有一个工厂方法可以加工不同的商品。具体解释:在某个类(Creator)的工厂方法(FactoryMethod)能被多态成加工不同产品的方法。(如果有这么样的一个方法存在,那么就是实现了该模式,这是该模式的唯一特性)该模式有如下两个要点:1.该函数可多态(即:包含该函数的类是多态的)2.该函数的返回值是多态的(Product)如下代码实现(为了体现多态性,我把ConcreteCre...
2019-02-20 13:45:24 226
原创 单件模式(在简单实现)
价值:保证只创建一个对象。如下是但示例模式的最简单实现:#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 488
原创 最简单的装饰模式
特点:就是自己继承自己,在继承的过程中丰富自己。作用:1.通过继承丰富机能2.可以无限制的丰富机能(多维度的,与桥接相比桥接只有两个维度,这个模式和桥接相比就是可以桥接自己)https://download.csdn.net/download/xie__jin__cheng/10962740(这里由该模式的实践举例)https://download.csdn.net/download/xi...
2019-02-19 14:06:50 412
原创 最简单的桥接模式
目的:某个机能有两个维度的变化,那么把这个机能分别交给两个对象对负责,让他俩组合来完成任务。这样当构建丰富多彩的机能时,只需要更小的负责度就能实现。记录:这个模式其实本身是面向对象编程的基础,任何两个对象都可以发生桥接,那是不是发生了桥接就叫桥接模式呢。理论上这么说应该也没有问题,但桥接这么模式强调的时桥接后形成组合功能的丰富。https://download.csdn.net/my/upl...
2019-02-19 13:53:35 418
原创 先真正的放下,然后再次拥抱
这是一个思维模型。举例:遇到一次机会,真的很好。保守的人:坚持自己的,不变。(错过机会,然后后悔)善变的人:抓住机会,完成一次飞跃。遇到一次机会,不扎好。保守的人:坚持自己的,不变。善变的人:抓住机会,发现不怎么好。(错误选择,然后后悔)机会这东西无论多么睿智的人,都有可能做错误的选择。那么如何做一个相对更正确的选择呢。我们发现上面两种典型性格的人,面对机会的时候都有可能做错误的...
2019-02-19 10:19:37 100
原创 最简单的理解组合模式
价值:把简单对象(leaf)和组合对象(Composite)都当成一种对象使用,对于使用者不需要关心他使用的对象是个简单对象还是复杂对象,就一样:你用就是了,就用一种方式(Operation)取用,至于对象本身的差别有我来完成(多态).就这一句话,如果你不能理解,那么也请被浪费时间,找更合适的资料去看。(建议加强一下对面向对象知识的深刻理解)...
2019-02-19 09:46:41 393
原创 JVM 工作原理和流程
今天学了一下JVM的工作原理。下面进行有错到细的论述1.第一层源码-字解码-虚拟机-真机执行吗2.第二层虚拟机模拟真机的运行过程,他调用真机的接口。对于java语言来讲,你就当做虚拟机在执行你的代码。那么从真机的角度是啥情况呢,他认为两个软件在运行,一个是虚拟机,一个是java程序。?那又不对了,真机不运行java程序,他只运行虚拟机,啊那就是如下这个过程字节码-虚拟机-真机-硬件...
2019-02-01 10:41:44 701 4
JFreeChart
2020-10-21
webpack-使用webpack-dev-middleware.rar
2020-04-12
webpack-使用webpack-dev-server.rar
2020-04-12
Dagger2Test.rar
2019-05-21
创建一个矩形,矩形下面有一个图片,指定矩形区域裁切图片
2024-07-27
创建一个矩形,当鼠标进入这个矩形的时候,这个矩形边线变色,且鼠标变成手型,且这时候按下鼠标,鼠标可以上下拖动这个矩形
2024-07-27
linux 系统登录源码的位置在哪里
2021-01-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人