设计模式
the_conquer_zzy
计算机科学与技术专业
展开
-
设计模式(一) 单例模式
单例模式:单例模式的写法: 1. 饿汉模式 public class Singleton{ private static Singleton instance=new Singletion(); private Singleton(){} public static Singleton getInstance(){ return instanc...原创 2018-07-07 14:56:20 · 134 阅读 · 0 评论 -
设计模式(十五)组合模式
组合模式组合模式的几个角色:Component 抽象构建角色。 定义参加组合对象的共有方法 和属性。Leaf叶子构件。 叶子对象,其下没有其他的分支。Composite 树枝构件。 树枝对象,他的作用是组合树枝节点和叶子节点形成一个树形结构。public abstract class Component { public void doSomething(){ ...原创 2018-07-28 19:31:35 · 117 阅读 · 0 评论 -
设计模式(十六) 观察者模式
观察者模式也叫发布/订阅模式, 定义一种1对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新观察者模式的几个角色:Subject 被观察者。定义被观察者必须实现的职责,它必须能够动态的增加,取消观察者。 要有管理观察者并通知观察者。Observer观察者。观察者接收到消息后,进行update操作,对接收到的信息进行处理。ConcreteSubject...原创 2018-10-29 14:02:30 · 106 阅读 · 0 评论 -
设计模式(十八) 备忘录模式
备忘录模式: 在不破坏封装性的前提下,捕获一个对象的内部状态, 并在该对象之外保存这个状态。这样以后可将该对象恢复到原先保存的状态备忘录模式角色:Originator 发起人角色Memento 备忘录角色Caretaker 备忘录管理员角色public class Originator{ private String state=""; public String getSta...原创 2018-10-31 11:55:33 · 99 阅读 · 0 评论 -
设计模式 (十七) 门面模式
门面模式 也叫外观模式,是一种常用的封装模式。 要求一个子系统的外部与其内部通信必须通过一个统一的对象进行。 门面模式提供一个高层次的接口,使得子系统更易于使用。举个例子,对应一个写信的过程,就是一个人自己写信,先写内容,再写信封,再放到信封里,然后邮寄。后来邮局开了个服务,只要告诉我内容和地址就可以了,其他的就不用管了。这就是门面模式。简单的说, 门面对象是外界访问子系统内部的唯一通道,不管...原创 2018-10-29 22:16:52 · 95 阅读 · 0 评论 -
设计模式(十九)访问者模式
访问者模式访问者模式的场景:公司老板要看报表, 公司有销售,财务,研发,每个员工有自己独特的信息,最常见的做法是: 定义抽象员工,并定义模板方法,每一个员工实现自己角色的个性化方法,通过模板方法report来访问。比如是这样的, public abstract Employee{ private String name; private String telephone; publi...原创 2018-11-01 22:31:29 · 110 阅读 · 0 评论 -
行为类模式PK (一):策略模式和命令模式
行为类模式行为类模式比较多:责任链模式,命令模式,解释器模式,迭代器模式,访问者模式,备忘录模式,中介者模式,观察者模式, 状态模式,策略模式,模板方法。11个命令模式和策略模式策略模式的意图是封装算法,封装完整的,不可拆分的原子业务,其意图是让算法独立,并且可以相互替换,让行为的变化独立于行为的客户。命令模式 命令模式是对动作的解藕,把一个动作执行分为执行对象,执行行为,让两者相互独...原创 2018-11-09 17:01:39 · 1711 阅读 · 0 评论 -
行为类模式PK (二):策略模式和状态模式
策略模式和状态模式策略模式和状态模式在类图上十分相似。都是高扩展性的设计。两者最重要的区别是: 1. 策略模式封装的是不同的算法,算法之间没有交互,以达到算法可以自由切换的目的。2. 状态模式封装的是不同的状态,以达到状态切换行为随之发生改变的目的。举一个场景。人在孩童时期玩耍,成年工作,老年退休。按照策略模式是3种不同的工作方式,而按照状态模式,,则是认为人的状态不同产生了不同的行为结果...原创 2018-11-09 18:29:58 · 207 阅读 · 0 评论 -
行为类模式PK (三):观察者模式和责任链模式
观察者和责任链观察者和责任链也有些相同的地方: 就是观察者本身可以形成一个观察者链。以dns解析器为例子:责任链模式就是本地处理不了域名,就交给上一级,上一级处理不了就再往上,直至处理。 本地有上级,上级还有上级,组成一个责任链。观察者模式就是, 自己处理不了就通知观察者。 本地dns服务器有观察者是上一级dns服务器,上一级还有观察者。这两者的区别是:责任链模式,在链中不会改变传递...原创 2018-11-09 21:06:45 · 663 阅读 · 0 评论 -
设计模式(二十) 状态模式
状态模式状态模式的场景,就是一部电梯的运行,开,关,运行,停止。如果不用状态模式,会出现很多switch case或者if else 进行电梯状态的判断。状态模式,就是一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其他类。状态模式的3个角色:State 抽象状态角色。 负责对象状态定义,封装环境角色以实现状态切换。ConcreteState 具体状态角色。 每一个具...原创 2018-11-02 15:44:24 · 131 阅读 · 0 评论 -
设计模式 (二十一)解释器模式
解释器模式解释器模式的场景就是一个计算器,计算简单的+,-运算,a+b-c, a-b+c这种,给出a,b,c的值,计算表达式结果。需要设计一个表达式分析。解释器是一种按照规定语法进行解析的方案,在现在项目中使用极少。解释器模式的优点扩展性较好解释器模式的缺点解释器模式会引起类膨胀解释器模式采用递归调用方法。 调试复杂效率问题。 大量采用递归和循环,效率差不太推荐用, sq...原创 2018-11-02 16:52:20 · 137 阅读 · 0 评论 -
设计模式 (二十二)享元模式
享元模式享元模式是池技术的体现。定义如下: 使用共享对象可有效的支持大量的细粒度的对象。目的是解决大象创建对象导致的内存溢出问题以及程序的效率问题。享元模式中细粒度对象包含两种状态:内部状态。 内部状态是对象可共享出的信息,存储在享元内部且不会随环境改变而改变。外部状态。 外部状态是对象得以依赖的一个标记,岁环境改变而改变,不可以共享的状态。享元模式目的就是运用共享技术,是细粒度对...原创 2018-11-02 17:59:13 · 104 阅读 · 0 评论 -
设计模式 (二十三) 桥梁模式
桥梁模式桥梁模式的背景: 一个公司生产产品,如果是一个确定的公司,且生产固定的产品。那么这个类实现起来可能就比较确定,比如这样:public abstract class corp{ protected abstract void produce(); protected abstract void sell(); public void makeMoney(){ this.prod...原创 2018-11-04 18:08:08 · 156 阅读 · 0 评论 -
设计模式(十四)迭代器模式
迭代器模式也是非常简单的一个设计模式。 是java天生支持的,建议多看看Iterator 接口。 顺便插一句Iterator 和Iterable两个接口的区别。实现Iterable 需要实现iterator()方法,该方法返回一个Iterator类型实例实现Iterator 需要实现hasNext() ,next(), remove()等方法...原创 2018-07-28 19:31:16 · 106 阅读 · 0 评论 -
设计模式(十三)适配器模式
适配器模式,也叫变压器模式,或者包装模式。装饰器也是包装模式。适配器模式是完成不同类之间转换的。适配器继承要转换的源角色,实现目标角色的接口。适配器模式的几个角色:Target 目标角色。 该角色是希望转变的目标接口。Adaptee 源角色。 想把谁转变成目标角色,谁就是源角色。 它是已经存在的,运行良好的类或对象。 经过适配器包装变成目标角色Adapter适配器角色 。 核心角色,...原创 2018-07-28 19:30:56 · 118 阅读 · 0 评论 -
设计模式(二)工厂模式
工厂模式有一个满足扩展方式的核心点是,利用反射把具体的产品封装起来,这样扩展的时候,不需要修改具体的工厂,只需要添加对应的产品类可以了。工厂模式核心: 工厂模式满足开闭原则,实现动态扩展,而不用修改代码的实现方式是利用反射,把要创建的产品类作为参数传进去,然后进行生产。public abstract class Factory{ public abstract <T ex...原创 2018-07-07 15:17:09 · 124 阅读 · 0 评论 -
设计模式(三) 抽象工厂模式
抽象工厂模式: 就是对产品进行分族,一个工厂生产对应的产品族,比如男性工厂,女性工厂,产品族是具有某些特性的一类产品,比如女人、女人分黄种人,白种人,黑种人,这个意思。 再比如,某个工厂生产玩具,有适合0-3岁儿童的一系列玩具(塑料汽车,塑料小飞机),还有适合6-10岁的玩具,小自行车,游戏机等。 抽象工厂模式,对产品族扩展封闭,对产品等级扩展开放。 工厂模式重在生产,而建造者模式重在组装。...原创 2018-07-07 16:50:30 · 91 阅读 · 0 评论 -
设计模式(四) 模板方法模式
模板方法模式:模板方法模式包括:基本方法 基本方法由子类负责实现模板方法 模板方法负责调度基本方法原创 2018-07-07 16:54:05 · 92 阅读 · 0 评论 -
设计模式(五) 建造者模式
建造者模式使用的场景: 不同的执行顺序,产生不同的事件结果。多个部件或零件,都可以装配到一个对象中,但产生的运行结果不同产品类非常负责,产品类中不同调用顺序不同,产生了不同的效能。和工厂模式不同的是: 建造者模式关注的是零件类型和装配工艺,工厂更关心创建不关心组装。相同:都是创建类模式。...原创 2018-07-07 16:59:19 · 189 阅读 · 0 评论 -
设计模式(六)代理模式
普通代理,强制代理,动态代理,应用场景,延迟加载原创 2018-07-28 19:27:02 · 109 阅读 · 0 评论 -
设计模式(七)原型模式
原型模式。 原型模式的场景如下:有一个需求,需要发送个性化电子账单。或者一个祝福语,也就是说除了姓名不一样,其他不部分很可能一样。针对这种场景,如果采用单线程,每一个用户20ms的时间,如果上100万人,需要发送时间为 2ws=200/36小时。如果设计8:00收到,那么可能最后一个人到下午2点才收到,显然不可接受。 当然,目前大多采用多线程,多线程带来一个并发问题。随之而来的是一些解决方案。...原创 2018-07-28 19:27:35 · 104 阅读 · 0 评论 -
设计模式(八)中介者模式
中介者模式,主要是为了避免网状结构,从而抽出一个中介者,降低系统复杂度。一个对象要和N多个对象交流,就是网状结构。 如果所有的类都和中心交流就简化了网络的复杂度.中介者模式的优点把1对多依赖变成1对1 依赖, 同事类只依赖中介者,减少了依赖,同时也降低了类间的耦合中介者模式的缺点中介者会膨胀的很大,逻辑复杂,同事类越多,中介者的逻辑就越复杂。中介者的常用场景:机场调度中心M...原创 2018-07-28 19:27:59 · 88 阅读 · 0 评论 -
设计模式(九)命令模式
命令模式场景:当不同需求需要不同的实例进行执行,或者一个需求需要不同实例共同合作执行,但是需求者不太想和具体的实现者一一打交道,就可以把需求封装成一个命令,把命令传给一个执行者,执行者接到命令后,执行命令,并把具体的如何执行交给具体的命令本身。 具体的命令本身具体组合实际执行者,编排流程等。命令模式是一个高内聚模式。Receiver : 具体的执行者Command : 需要执行的命令在此...原创 2018-07-28 19:28:21 · 153 阅读 · 0 评论 -
设计模式(十)责任链模式
责任链模式类图:责任链模式的优点将请求和处理分开。 请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌。适合用于无状态bean责任链模式的缺点性能问题。每个请求都是从链头遍历到链尾,当然这个也有解法,就是不要使用递归,而是采用循环,并且设置退出标志位。注意点责任链中的节点数量需要控制,避免出现超长链。...原创 2018-07-28 19:28:47 · 95 阅读 · 0 评论 -
设计模式(十一)装饰者模式
装饰者模式:基本类图:装饰者模式就是对基础组件进行修饰,装饰者和被装饰者通过继承的方式拥有共同结构,同时被装饰者作为装饰者的一个属性。 这样就可以像代理模式一样,去达到增强component的一些功能。装饰者模式也不一定要通过继承,同样可以通过接口实现来表达。public abstract class Component { public abstract void opera...原创 2018-07-28 19:29:06 · 119 阅读 · 0 评论 -
设计模式(十二)策略模式
策略模式策略模式比较简单。 定义一组算法,并将算法封装起来。策略模式使用的是面向对象的继承和多态机制。 策略模式有三个角色:context 封装角色。 它也叫做上下文角色,起承上启下的作用,屏蔽高层模块对策略,算法的直接访问。Strategy抽象策略角色。 策略,算法家族的抽象,通常为接口,定义每个策略或算法必须要具有的方法或属性。ConcreteStrategy 具体策略角色。 实现...原创 2018-07-28 19:30:35 · 135 阅读 · 0 评论 -
结构类模式PK
结构类模式包括:适配器模式,代理模式,装饰者模式,桥梁模式,组合模式,,门面模式,享元模式。 共7个模式。这些模式的pk主要集中在,适配器模式,代理模式和装饰者模式。桥梁模式是:工厂生产产品的场景,把产品和工厂就行解藕,代替继承。门面模式:是邮局的场景,对子系统进行封装享元模式:是共享细粒度对象。是考试报名系统的场景。组合模式: 是公司人事架构的场景,经理,普通员工都是员工。代理模...原创 2018-11-08 12:57:44 · 151 阅读 · 0 评论