
设计模式
tcoding
这个作者很懒,什么都没留下…
展开
-
if else 替换方案
【代码】if else 替换方案。原创 2022-11-15 17:56:08 · 420 阅读 · 0 评论 -
设计模式之桥接模式(Bridge)
设计模式之桥接模式(Bridge)桥模式更倾向于组合而不是继承。实现细节从层次结构推送到具有单独层次结构的另一个对象。场景有几种图形(正方形、长方形、圆形),为每种图形具有3种不同的颜色(红、黄、蓝),现需要把图形和颜色组合,可以画出3*3=9种图形,有两种方案方案一:为每种形状都提供各种颜色的版本。方案二:根据实际需要对颜色和形状进行组合。图形接口public interfac...原创 2018-10-09 14:39:35 · 232 阅读 · 0 评论 -
设计模式之建造者模(Builder)
Builder 建造者模式本系列为 https://github.com/iluwatar/java-design-patterns 阅读笔记之前读《java effective》时了解到Builder模式至于为什么出现Builder模式参见 https://blog.youkuaiyun.com/lms1719/article/details/70741691这个模式看似简单还是需要写一遍才行,我...原创 2018-09-30 16:56:47 · 164 阅读 · 0 评论 -
设计模式之命令模式(Command)
设计模式之命令模式(Command)本篇为 https://github.com/iluwatar/java-design-patterns/tree/master/command 阅读笔记典型用例保持请求的历史实现回调功能实现撤消功能目的将请求封装为对象,从而允许使用不同的请求,队列或日志请求参数化客户端,并支持可撤销操作场景精灵有两种属性(大小,可见不可见),巫师...原创 2018-10-16 10:00:56 · 253 阅读 · 0 评论 -
设计模式之备忘录模式(Memento)
设计模式之备忘录模式(Memento)本篇为 https://github.com/iluwatar/java-design-patterns/tree/master/memento 阅读笔记主要解决所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。应用例子后悔药打游戏存档浏览器后退关键代码...原创 2018-10-16 10:30:42 · 157 阅读 · 0 评论 -
设计模式之组合模式(Composite)
设计模式之组合模式(Composite)场景树结构,文件系统具体请看https://www.cnblogs.com/chenssy/p/3299719.html每个句子都由单词组成,而单词又由字符组成。这些对象中的每一个都是可打印的,它们可以在它们之前或之后打印一些东西,例如句子总是以句号结束,而字总是在它之前有空格组合中的对象声明接口public abstract class...原创 2018-10-09 16:07:49 · 165 阅读 · 0 评论 -
设计模式之装饰模式(Decorator)
设计模式之装饰模式(Decorator)场景普通人跑步,跳高,举重很普通。现在需要使用装备变成钢铁侠,3项指标成倍扩大Man接口public interface Man { void run(); int highJump(); int weightlifting();}normal manpublic class NormalMan imple...原创 2018-10-09 17:16:31 · 167 阅读 · 0 评论 -
设计模式之状态模式(State)
设计模式之状态模式(State)意图允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。使用场景:1、行为随状态改变而改变的场景。2、条件、分支语句的代替者。场景长毛象脾气多变平静–生气–平静–生气,状态可以转换,每种状态都有对应的方法State接口public interface State { void onEnterState(); ...原创 2018-10-16 11:50:17 · 145 阅读 · 0 评论 -
设计模式之策略模式(Strategy)-Java8
设计模式之策略模式(Strategy)-Java8场景定义一系列算法,封装每个算法,并使它们可互换。策略允许算法独立于使用它的客户端。java8很好的支持了策略模式,在读《Java8 实战》的时候感受到了,这里就使用其中的例子苹果有颜色和重量属性,现在比较苹果的属性,每种比较都是一种策略策略模式颜色枚举public enum Color { RED("red"), GRE...原创 2018-10-16 14:38:16 · 2435 阅读 · 2 评论 -
设计模式之访问者模式(Visitor)
设计模式之访问者模式(Visitor)本篇为 https://github.com/iluwatar/java-design-patterns/tree/master/visitor 阅读笔记意图主要将数据结构与数据操作分离。关键代码在数据基础类里面有一个方法接受访问者,将自身引用传入访问者。优点1、符合单一职责原则。2、优秀的扩展性。3、灵活性。缺点1、具体元...原创 2018-10-19 09:44:28 · 236 阅读 · 0 评论 -
设计模式之观察者模式(Observe)-泛型扩展
设计模式之观察者模式(Observer)本篇为 https://github.com/iluwatar/java-design-patterns/tree/master/observer 阅读笔记扩展部分是很精彩意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。场景观测天气(机器观测,人工观测),天气变化时,观测者做相...原创 2018-10-16 17:21:06 · 1543 阅读 · 0 评论 -
设计模式之外观模式(Facade)
设计模式之外观模式(Facade)场景病人去医院看病,首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴费,才可以到化验部门做化验。化验后再回到门诊室。解决这种不便的方法便是引进外观模式,医院可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是外观模式的体现,病人只接触接待员,由接待员与各个部门打交道。这篇文章对外观模式讲的不错ht...原创 2018-10-10 16:27:40 · 459 阅读 · 0 评论 -
观察者模式和EventBus
观察者模式和EventBus在熟悉一些项目的时候,发现项目中的一些设计模式,之后会慢慢写。这里就写项目中的观察者的使用。观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。关于观察者模式,之前写过见 https://blog.csdn...原创 2019-04-13 23:05:20 · 568 阅读 · 0 评论 -
加减乘除的扩展设计
加减乘除的扩展设计需求:实现加减运算(注意:以后可能会扩展乘除,备注:时间日期类型好像不支持乘除)加减的操作对象包括(Date和DateTime按天加减,currency实现减法时不能小于0,percent最大值不超过100,最小值不小于0),如果超出范围则不执行运算,并返回信息相应的错信息(eg:percent is more than 100% unable to add)设计方案...原创 2019-05-14 10:28:15 · 287 阅读 · 0 评论 -
设计模式之单例模式(Singleton)
Singleton 单例模式本系列为 https://github.com/iluwatar/java-design-patterns 阅读笔记Eagerly类一加载就实例化/** * Singleton class. Eagerly initialized static instance guarantees thread safety. */public final class ...原创 2018-09-30 15:56:07 · 219 阅读 · 0 评论 -
创建型设计模式之工厂相关
文章目录创建型设计模式之工厂相关Fectory MethodAbstract-FectoryFectory-Kit站在巨人的肩膀上根据场景和UML图在写代码就好写了,本系列为 https://github.com/iluwatar/java-design-patterns 阅读笔记之后会结合《设计模式》清华大学出版社再来一遍本人菜鸟有不对的地方还望批评指正创建型设计模式之工厂相关Fe...原创 2018-09-30 14:45:01 · 231 阅读 · 0 评论 -
设计模式之适配器模式(Adapter)
设计模式之适配器模式(Adapter)场景您的存储卡中有一些照片,需要将它们传输到计算机上。为了传输它们,您需要某种与计算机端口兼容的适配器,以便将存储卡连接到计算机。在这种情况下,读卡器是适配器。另一个例子是着名的电源适配器; 三脚插头不能连接到双管插座,需要使用电源适配器使其与双叉插座兼容。另一个例子是翻译人员将一个人所说的话翻译成另一个人维基百科允许将现有类的接口用作另一个接口...原创 2018-10-09 11:58:01 · 257 阅读 · 0 评论 -
设计模式+类图
designer在看spring框架源代码时,感觉很乱,不理解为什么要那样写,能回答这个问题的就是设计模式,掌握设计模式,再去阅读源代码就简单的多了例子来源于清华大学出版社,刘伟主编的2011年10月第一版《设计模式》 这本书是我大学时的教材,书中存在大篇幅的代码(传说中的代码凑字数),很适合初学设计模式的人使用 把这本书翻了两边,觉得对设计模式的理解还是很片面,不深入,于是就把书上的...原创 2018-02-12 13:56:05 · 324 阅读 · 0 评论 -
设计模式之享元模式(Flyweight)
设计模式之享元模式(Flyweight)本篇为https://github.com/iluwatar/java-design-patterns/tree/master/flyweight阅读笔记场景炼金术士的商店里摆满了魔法药水。许多药水是相同的,因此不需要为每个药水创建新的对象。相反,一个对象实例可以表示多个货架项目,因此内存占用量仍然很小它用于通过尽可能多地与类似对象共享来最小化内存...原创 2018-10-11 10:24:21 · 184 阅读 · 0 评论 -
设计模式之中介者模式(Mediator)
设计模式之中介者模式(Mediator)场景比较经典的场景是聊天室,本篇采用 https://github.com/iluwatar/java-design-patterns/tree/master/mediator 上的例子现有巫师、猎人、霍比特人··· ···某个世界,他们之间可以任意多个结成团体,团体之间有福同享。**主要解决:**对象与对象之间存在大量的关联关系,这样势必会导致...原创 2018-10-11 15:00:29 · 397 阅读 · 0 评论 -
类之间的关系与UML图总结
类之间的关系与UML在简书上看见了一张图很不错 https://www.jianshu.com/p/0cd7df8a7789泛化 (继承 父子关系)实现 (实现 特殊父子)前两种比较好理解组合(属性)contains-a组合关系表整体与部分不可分割,初始化整体时部分也要初始化,如上面鸟和翅膀,构造鸟就必须为其构造翅膀具体体现 翅膀类作为鸟类的属性,且在鸟初始时翅膀也要...原创 2018-10-11 16:33:04 · 249 阅读 · 0 评论 -
设计模式之原型模式(ProtoType)
Prototype 原型模式原型模式是关于克隆的1.浅克隆:只复制基本类型的数据,引用类型的数据只复制了引用的地址,引用的对象并没有复制,在新的对象中修改引用类型的数据会影响原对象中的引用。2.深克隆:是在引用类型的类中也实现了clone,是clone的嵌套,复制后的对象与原对象之间完全不会影响。3.使用序列化也能完成深复制的功能:对象序列化后写入流中,此时也就不存在引用什么的概念了,再...原创 2018-10-08 14:47:22 · 115 阅读 · 0 评论 -
设计模式之代理模式(Proxy)
文章目录设计模式之代理模式(Proxy)静态代理动态代理JDK动态代理CGLIB设计模式之代理模式(Proxy)代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的索引,实际执行时通过调用代理类的方法、实际执行的是被代理类的方法。静态代理场景登录功能已经完成,需要对登录前后进行日志记录代理接口public interface Login { void...原创 2018-10-08 15:58:11 · 774 阅读 · 0 评论 -
设计模式之解释器模式(Interpreter)
设计模式之解释器模式(Interpreter)本篇为 https://github.com/iluwatar/java-design-patterns/tree/master/interpreter 阅读笔记意图给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。优点1、可扩展性比较好,灵活。2、增加了新的解释表达式的方式。3、易于实现简单...原创 2018-10-18 14:09:37 · 145 阅读 · 0 评论 -
设计模式之迭代器模式(Iterator)
设计模式之迭代器模式(Iterator)本篇为 https://github.com/iluwatar/java-design-patterns/tree/master/Iterator 阅读笔记意图提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。优点1、它支持以不同的方式遍历一个聚合对象。2、迭代器简化了聚合类。3、在同一个聚合上可以有多个遍历。...原创 2018-10-18 14:45:51 · 218 阅读 · 0 评论 -
设计模式之模板模式(Template)
设计模式之模板模式(Template)意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。优点1、封装不变部分,扩展可变部分。2、提取公共代码,便于维护。3、行为由父类控制,子类实现。缺点每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。注意事项:为防止恶意操作,一般...原创 2018-10-18 15:11:51 · 179 阅读 · 0 评论 -
设计模式之责任链模式(Chain)
设计模式之责任链模式(Chain)本篇为 https://github.com/iluwatar/java-design-patterns/tree/master/chain 阅读笔记意图避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。优点1、降低耦合度。它将请求的发送者和接收者解耦。2、简化了...原创 2018-10-18 16:37:24 · 453 阅读 · 0 评论 -
设计模式分类/设计原则/源代码
设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式二、设计模式的六大原则...原创 2018-09-30 09:57:02 · 331 阅读 · 0 评论