![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java之设计模式
星澄码帝
生活不易,祝你每天开开心心。
展开
-
1、设计模式(创建型):之单例模式
作用保证一个类只有一个对象,并且提供一个访问改实例的全局访问点优点在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存) 避免对资源的多重占用(比如写文件操作)何时使用当您想控制实例数目,节省系统资源的时候常见应用场景Windows的Task Menager windows的Recycle Bin(回收站) 项目中读取配置的类,每...原创 2018-09-04 14:38:36 · 160 阅读 · 0 评论 -
14、设计模式(行为型)之模板方法模式(模板模式)
作用定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。何时使用有一些通用的方法。优点封装不变部分,扩展可变部分。 提取公共代码,便于维护。 行为由父类控制,子类实现。实例/** * @Author: create_By: chenxin * @Data:Created in 2018/9/2...原创 2018-09-26 09:59:55 · 198 阅读 · 0 评论 -
12、设计模式(结构型)之代理模式
作用为其他对象提供一种代理以控制对这个对象的访问何时使用想在访问一个类时做一些控制优点职责清晰 高扩展性 智能化实例动态代理 /** * @Author: create_By: chenxin * @Data:Created in 2018/8/28 10:18 * @Version: * @Acton: 明星接口 */public interface ...原创 2018-09-21 10:02:22 · 134 阅读 · 0 评论 -
15、设计模式(行为型)之迭代器模式
作用提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。何时使用遍历一个聚合对象。优点它支持以不同的方式遍历一个聚合对象。 迭代器简化了聚合类。 在同一个聚合上可以有多个遍历。 在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。实例/** * @Author: create_By: chenxin * @Data:Crea...原创 2018-09-27 10:04:43 · 156 阅读 · 0 评论 -
16、设计模式(行为型)之观察者模式
作用定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。何时使用一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。优点观察者和被观察者是抽象耦合的。 建立一套触发机制。实例自己创建 /** * @Author: create_By: chenxin * @Data:Crea...原创 2018-09-28 09:55:49 · 165 阅读 · 0 评论 -
17、设计模式(行为型)之中介者模式
作用用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。何时使用多个类相互耦合,形成了网状结构。优点降低了类的复杂度,将一对多转化成了一对一。 各个类之间的解耦。 符合迪米特原则。开发常见场景MVC模式(其中的C,控制器就是一个中介者,M和V都和它打交道)) 窗口游戏程序,窗口软件开发中窗口对象也...原创 2018-09-29 10:01:37 · 203 阅读 · 0 评论 -
19、设计模式(行为型)之状态模式
作用允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。何时使用代码中包含大量与对象状态有关的条件语句。优点封装了转换规则 枚举可能的状态,在枚举状态之前需要确定状态种类 将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的行为 允许状态转换逻辑与状态对象合成一体,而不是某一个巨大的条件语句块 可以让多个环境...原创 2018-10-08 09:57:36 · 190 阅读 · 0 评论 -
18、设计模式(行为型)之备忘录模式
作用在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。何时使用很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有"后悔药"可吃。优点给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态 实现了信息的封装,使得用户不需要关心状态的保存细节。实例...原创 2018-09-30 09:49:06 · 186 阅读 · 0 评论 -
20、设计模式(行为型)之策略模式
作用定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。何时使用一个系统有许多许多类,而区分它们的只是他们直接的行为。优点算法可以自由切换。 避免使用多重条件判断。 扩展性良好。实例/** * @Author: create_By: chenxin * @Data:Created in 2018/9/25 11:26 * @Version: * @A...原创 2018-10-09 09:57:55 · 137 阅读 · 0 评论 -
22、设计模式(行为型)之访问者模式
作用主要将数据结构与数据操作分离。何时使用需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中优点符合单一职责原则 优秀的扩展性 灵活性实例 根本不会用到,一般编程语言里面都已经帮你封装好了 ...原创 2018-10-16 14:55:25 · 126 阅读 · 0 评论 -
23、设计模式(行为型)之解释器模式
作用给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。何时使用如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。 这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。优点可扩展性比较好,灵活。 增加了新的解释表达式的方式。 易于实现简单文法。实例除非你开发和设计新的语言...原创 2018-10-16 14:58:32 · 130 阅读 · 0 评论 -
11、设计模式(结构型)之享元模式
作用运用共享技术有效地支持大量细粒度的对象。何时使用系统中有大量对象。 这些对象消耗大量内存。 这些对象的状态大部分可以外部化。 这些对象可以按照内蕴状态分为很多组,当把外蕴对象从对象中剔除出来时,每一组对象都可以用一个对象来代替。 系统不依赖于这些对象身份,这些对象是不可分辨的。优点大大减少对象的创建,降低系统的内存,使效率提高。实例/** * @Author:...原创 2018-09-20 10:05:30 · 122 阅读 · 0 评论 -
6、设计模式(结构型)之适配器模式
作用将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作何时使用系统需要使用现有的类,而此类的接口不符合系统的需要 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口 通过接口转换,将一个类插入另一个类系中优点可以让任何两个没有关联的类一起...原创 2018-09-11 09:38:12 · 106 阅读 · 0 评论 -
2、设计模式(创建型)之工厂模式
作用定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。何时使用我们明确地计划不同条件下创建不同实例时优点一个调用者想创建一个对象,只要知道其名称就可以了 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以 屏蔽产品的具体实现,调用者只关心产品的接口实例简单工厂 package xin.chen.create_type....原创 2018-09-05 10:44:24 · 153 阅读 · 0 评论 -
一张图带你看懂设计模式大纲
这是本人学习设计模式的时候自己画的一张图,其实这事一张大纲图片,很容易理解。六种设计模式原则。三大类型模式。创建型。 结构型。 行为型。23种设计模式。基本上记住这些模式的特性就很容易理解了。一张图太大了截取不了,里面有很多小的内容。后续我会断开里面结构分别截取出来。到时候可以直接去我的资源里面下载。还有设计模式的demo也已经上传到码云上面。下面是我的码云地址。设计模式...原创 2018-09-03 14:59:54 · 917 阅读 · 0 评论 -
3、设计模式(创建型)之抽象工厂模式
作用提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。何时使用系统的产品有多于一个的产品族,而系统只消费其中某一族的产品优点当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。实例package xin.chen.create_type.factory.abstractFactory;/** * @Author:...原创 2018-09-06 09:54:32 · 134 阅读 · 0 评论 -
7、设计模式(结构型)之桥接模式
作用将抽象部分与实现部分分离,使它们都可以独立的变化何时使用实现系统可能有多个角度分类,每一种角度都可能变化优点抽象和实现的分离 优秀的扩展能力 实现细节对客户透明实例下面以买电子产品为例package xin.chen.structural_type.bridge;/** * @Author: create_By: chenxin * @Data:Crea...原创 2018-09-12 10:00:33 · 123 阅读 · 0 评论 -
5、设计模式(创建型)之原型模式(复制)
场景克隆技术的过程是怎么样的?克隆 的过程就叫做原型本质通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式何时使用当一个系统应该独立于它的产品创建,构成和表示时 当要实例化的类是在运行时刻指定时,例如,通过动态装载 为了避免创建一个与产品类层次平行的工厂类层次时 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合...原创 2018-09-10 10:22:46 · 199 阅读 · 0 评论 -
4、设计模式(创建型)之建造者模式
场景比如说构建一个完整的物品的时候,他由很多个小组件组成,组装的过程中有一个过程,这个过程叫装配作用将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。何时使用一些基本部件不会变,而其组合经常变化的时候优点建造者独立,易扩展 便于控制细节风险实例本实例以飞船为例,创建各种不同的飞创零件。package xin.chen.create_type....原创 2018-09-07 09:53:17 · 186 阅读 · 0 评论 -
9、设计模式(结构型)之组合模式
作用将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。何时使用您想表示对象的部分-整体层次结构(树形结构) 您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象优点高层模块调用简单 节点自由增加实例public interface AbstractFile { void killVi...原创 2018-09-18 10:17:40 · 120 阅读 · 0 评论 -
10、设计模式(结构型)之外观模式
作用为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用何时使用客户端不需要知道系统内部的复杂联系,整个系统只需提供一个"接待员"即可。 定义系统的入口。优点减少系统相互依赖。 提高灵活性。 提高了安全性。实例public class IAB { public void openAccount(){ ...原创 2018-09-19 09:50:48 · 126 阅读 · 0 评论 -
8、设计模式(结构型)之装饰模式
作用动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活何时使用在不想增加很多子类的情况下扩展类优点装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能实例结构图/** * @Author: create_By: chenxin * @Data:Created in 2018/8...原创 2018-09-14 09:53:05 · 143 阅读 · 0 评论 -
13、设计模式(行为型)之命令模式
作用将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。何时使用在某些场合,比如要对行为进行"记录、撤销/重做、事务"等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将"行为请求者"与"行为实现者"解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。优点降低了系统耦合度。 新的命令可以很容易添加到系统中去。实例 /** * @Autho...原创 2018-09-25 10:12:16 · 139 阅读 · 0 评论 -
21、设计模式(行为型)之责任链模式
作用避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。何时使用在处理消息的时候以过滤很多道。优点降低耦合度。它将请求的发送者和接收者解耦。 简化了对象。使得对象不需要知道链的结构。 增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。 增加新的请求处理类...原创 2018-10-10 10:22:37 · 197 阅读 · 0 评论