![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
weixin_39137699
阳光,热情,幽默
展开
-
设计模式-命令模式
命令模式定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 使用场景:只要你认为是命令的地方就可以采用命令模式,例如,在GUI开发中,一个按钮的点击是一个命令,就可以采用命令模式,模拟DOS当然也要采用命令模式。 ...原创 2020-05-13 09:19:17 · 121 阅读 · 0 评论 -
设计模式-中介者模式
中介者模式定义:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 使用场景: 中介者模式适合多个对象之间紧密耦合,耦合的标准是:在类图中出现了蜘蛛网状结构。在这种情况下一定要考虑使用中介者模式,这有利于把蜘蛛网梳理为星型结构,使原本复杂混乱的关系变得清晰。 1.N个对象之间产生了相互的依赖关系。 2.多个对象有依赖关系,但是依赖的行为尚不确定或者有可能发生改变的可能,在这种情况下建议采用中介者模式,降低变更引起的风险扩散。 一些例子原创 2020-05-12 18:19:25 · 120 阅读 · 0 评论 -
设计模式-建造者模式
建造者模式定义(也叫做生成器模式):将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。 使用场景: 相同的方法,不同的执行顺序, 产生不同的事件结果,可以采用建造者模式。 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式。 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适。 在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到时,也可以采用建造者模式封装该对象的创建过程、原创 2020-05-12 09:51:15 · 94 阅读 · 0 评论 -
设计模式-模板方法模式
模板方法模式定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板模式解决了什么问题:定义一个算法模板,同时保护了模板步骤不被更改,同时可以复用代码, 由子类提供实现。 钩子:是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。 以及好莱坞原则:高层组件调...原创 2020-01-31 21:38:59 · 71 阅读 · 0 评论 -
设计模式-装饰者模式
学习装饰者模式 导读:因为继承滥用的问题,学习对象组合的方式,做到运行时装饰类,为什么呢?一旦你熟悉了装饰的技巧,我们将能够再不修改任何底层代码的情况下,给你的对象赋予新的职责。 起因:如果你必须给caffee的店的caffee设计类,那么同时会加上配料等其他因素,统计设计基类caffee,那么通过继承,那么必须在子类修改代码,那么如果当计算的caffee,遇到新的情况必须去修改源代码。所以这里违...原创 2020-01-22 23:21:06 · 54 阅读 · 0 评论 -
设计模式-观察者模式
学习与Head+First设计模式书上的。 观察者模式定义:定义一组一对多的对象,当一个对象改变,其他依赖它的对象也会收到通知。 起因:因为一个对象改变 结果:导致依赖它的对象全部收到通知。 解决了什么问题: 解决了当对象的状态发生改变时,能够将这种改变传递给订阅了当前对象的对象。而同时松耦合,可拓展。 使用场景: 报社和订阅报纸的人,以及明星被粉丝关注。这就牵涉到...原创 2020-01-18 21:10:21 · 66 阅读 · 0 评论 -
设计模式:单例模式
书上对单例模式的定义: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 这里我想跟大家说下我在书上看到一句话,当我们在构建软件的世界中遇到问题时,我们从现实生活中寻找答案,以及现实生活中很多...原创 2019-06-04 21:04:28 · 51 阅读 · 0 评论 -
设计模式:门面模式(外观模式)
书上外观模式的定义: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 子系统一: public class SubSystemOne { public void MethodOne(){ System.out.println("子系统一"); } } 子系统二 public class SubSyste...原创 2019-05-29 20:24:48 · 98 阅读 · 0 评论 -
设计模式:工厂方法
看了大话设计模式,于是记录一下。 简单工厂: 通过封装,继承,复用一些代码,便于修改。可重用,但是违背了开放-封闭原则。 于是出现了 工厂方法模式: 定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到了其子类。 首先定义个雷锋类 public class LeiFeng { public void Sweep(){ System....原创 2019-05-28 16:54:10 · 70 阅读 · 0 评论 -
设计模式:责任链模式
书上定义: 定义个经理类抽象类: public abstract class Manager { protected String name; protected Manager superior; public Manager(String name){ this.name = name; } public void SetSup...原创 2019-05-31 15:34:51 · 56 阅读 · 0 评论 -
设计模式:代理模式
书上对代理模式定义: 对其他对象提供一种代理以控制对这个对象的访问 2.适用什么场景,解决什么问题 当需要为一个对象在不同的地址空间中提供局部代理。 当需要创建开销非常大的对象时。 当需要控制对原始对象的访问。 当需要在访问对象执行时附加操作,比如可以通过代理对象计算访问实际对象的次数。 3.做到了啥高拓展或者维护吗? 当需要对一个类添加功能时,或者在方法执行前后增加Log操作时,也行,直接...原创 2019-05-27 21:34:35 · 70 阅读 · 0 评论