设计模式解析
文章平均质量分 65
ppp11
在校大学生 在湖南工业大学
展开
-
适配器模式
适配器模式介绍 适配器模式在开发中使用率很高,从代码中就可见的Adapter就可以看出。从早期经常使用的ListView,GridView到现在最新的RecyclerView都使用的Adapter,在开发中我们遇到的优化问题,出错概率较大的地方也基本出自Adapter。适配器是将两个不兼容的类融合在一起,它有点像粘合剂,将不同的东西通过一种转换使得它们能够协作起来。适配器模式的定义 适配原创 2017-08-01 11:29:05 · 170 阅读 · 0 评论 -
备忘录模式
备忘录模式介绍 备忘录模式是一种行为模式,该模式用于保存对象当前的状态,并且在之后可以再次恢复到此状态,这有点像我们平时说的‘后悔药’。备忘录模式实现的方式需要保证被保存的对象状态不能被对象从外部访问,目的是为了保护好被保存的这些对象状态的完整性以及内部实现不向外暴露。 备忘录模式的定义 在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可以将该对象恢复到原原创 2017-07-24 11:26:37 · 263 阅读 · 0 评论 -
装饰模式
装饰模式介绍 装饰模式也称为包装模式,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是继承关系的一种替代方案之一。在现实生活中你也可以看见很多装饰模式的例子,或者可以大胆的说装饰模式无处不在,就拿人来说,人需要各式各样的衣着,不管你穿着怎样,但是,对于个人的本质来说是不变的,充其量只是在外面披上一层遮羞物而已,这就是装饰模式装饰模式的定义 动态地给一个对象添加一些额外的职责。就增加原创 2017-08-02 14:18:04 · 187 阅读 · 0 评论 -
迭代器模式
迭代器模式介绍 迭代器模式又称为游标模式,是行为设计模式之一。迭代器模式算是一个比较古老的设计模式,其源于对容器的访问,比如java中的List、Map、数组等,我们知道对容器对象的访问必然会涉及算法,我们可以将遍历的方法封装在容器中,或者不提供遍历方法。如果我们将遍历的方法封装到容器中,那么对应容器类来说就承担了太多的功能,容器类不仅要维护自身内部的数据元素而且还要对外提供遍历的接口方法,原创 2017-07-25 10:44:49 · 233 阅读 · 0 评论 -
模板方法模式
模板方法模式介绍 在面向对象开发过程中,通常会遇到把子类的运行顺序,框架抽象到父类,由子类去实现父类定义的方法,算法执行的顺序,由父类决定,子类只要在方法里面实现自己不同的算法的框架就叫模板方法模式。模板方法模式的定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式的使用场景 多个子类有公有的方法,并且逻辑基本原创 2017-07-26 10:10:57 · 170 阅读 · 0 评论 -
享元模式
享元模式介绍 享元模式是对象池的一种实现,它的英文名称叫做Flyweight,代表轻量的意思,享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享、避免创建过多对象的效果,这样一来就可以提升性能、避免内存移除等。 享元模式中的部分状态是可以共享,可以共享的状态成为内部状态,内部状态不会随着环境变化;不可共享的状态则称之为外部状态,它们会随着原创 2017-08-03 14:13:13 · 233 阅读 · 0 评论 -
外观模式
外观模式的介绍 外观模式,他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于机构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。 外观模式定义 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个共层次的接口,使得子系统更易于使用。外观模式的使用场景 1.为一个复杂子系统提供原创 2017-08-04 10:53:37 · 180 阅读 · 0 评论 -
访问者模式
访问者模式介绍 访问者模式是一种将数据操作与数据结果分离的设计模式,在23中设计模式中最复杂的一个,使用频率不高。 访问这模式的基本想法是,软件系统中拥有一个由许多对象构成的、比较稳定的对象结构,这写对象的类都拥有一个accept方法用来接受访问者对象的访问。访问者是一个接口,它拥有一个visit方法,这个方法对访问到的对象结构中不同类型的元素做出不同的处理。在对象结构的一次访问过程中。原创 2017-07-27 11:58:25 · 257 阅读 · 1 评论 -
中介者模式
中介者模式定义 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而是耦合松散,而且可以独立地改变它们之间的交互。中介者模式的使用场景 当对象之间的交互操作很多且每个对象的行为操作都依赖彼此时,为防止在修改一个对象的行为时,同时涉及修改很多其他对象的行为,可采用中介者模式,来解决紧耦合问题。该模式将对象之间的多对多关系变成一对多关系,中介者对象将系统从网状结构变成以调停原创 2017-07-28 11:44:42 · 206 阅读 · 0 评论 -
桥接模式
桥接模式介绍 桥接模式称为桥梁模式,是结构型设计模式之一。在现实生活中大家都知道桥梁是链接河道两岸的主要交通枢纽,简而言之其作用就是连接河的两边,而我们的桥梁模式与现实中的情况很相似,也是承担着连接两边的作用。桥接模式的定义 将抽象部分与实现部分分离,使它们都可以独立地进行变化。桥接模式的使用场景 从模式的定义中我们大致可以了解到,这里“桥梁”的作用其实就是连接“抽象部分”与“实现部分”,但是原创 2017-08-07 14:25:48 · 603 阅读 · 0 评论 -
代理模式
代理模式介绍 代理模式也称为委托模式,是本书结构型设计模式所讲的第一个模式,其重要性不言而喻,相信在学过本章的内容后会发现不少设计模式中都有代理模式的影子。那么何谓代理呢?其实代理在我门生活中无处不再,对于程序员莫过于代理上网了,连接代理服务器可以上网冲浪,叫公司的同事帮忙买饭也是一种代理,如果遇到公司老板欠工资不发,可以请律师帮忙打官司。代理模式的定义 为其他对象提供一种代理以控制对这个对象的原创 2017-07-29 10:57:30 · 296 阅读 · 0 评论 -
解析器模式
解释器模式介绍 解释器模式是一种用得比较少的行为模式,其提供了一种解释语言的语法或表达式,该模式定义了一个表达式接口,通过该接口解释一个特定的上下文。 解释器模式的定义 给定一个语言,定义它的文法的,并定义它的解释器,该解释器用来解释该文法的一个表示语言中的句子。这就是解释器模式,定义比较抽象,如四则运算,表达式a+b+c-d,通过解释器模式,解释表达式实现加减运算。这个表达式可以为任何遵循相原创 2017-07-19 15:18:48 · 350 阅读 · 0 评论 -
组合模式
组合模式介绍 组合模式有时候又叫做部分-整体模式,它使我们树形结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式可以优化处理递归或分级数据结构。 组合模式的定义 将对象组合成树形结构以表示”部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 组合模式的使用场景 表示对象的部分-整原创 2017-07-31 11:26:31 · 221 阅读 · 0 评论 -
单例模式
单例模式的定义: 确保一个类只有一个实例,通过自行实例化向整个系统提供这个实例。 单例模式的使用场景: 确保某个类有且只有一个对象的场景,避免产生对歌对象消耗过多资源,或者某种类型的对象有且只有一个 单例模式分类: 饿汉式 private static final Singleton mInstance = new Singleton(); private Singleton(){} public原创 2017-07-11 11:50:30 · 163 阅读 · 0 评论 -
Builder模式
Builder模式定义 将一个复制对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。(抽象拗口) Builder模式的使用场景 相同的方法,不同的执行顺序,产生不同的事件结果 当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值 多个布局或零件,都可以装配到一个对象中,但是产生的运行结构又不相同 简化的Builder模式public class User { privat原创 2017-07-11 17:44:19 · 284 阅读 · 0 评论 -
原型模式
原型模式定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 原型模式示例public class Person implements Cloneable { private String name; private int age; private double height; private double weight; pub原创 2017-07-12 15:19:57 · 246 阅读 · 1 评论 -
工厂方法模式
工厂方法模式定义 定义一个用于创建对象的接口,让子类决定实例化那个类 工厂方法模式1.简单工厂模式 简单工厂模式的工厂类一般使用静态方法,方法通过接收的参数不同返回创建不同产品对象。 举一个例子: 比如我喜欢去超市买水果:我抽象出来一个水果抽象类:public abstract class Fruit{ public abstract void des原创 2017-07-13 17:02:13 · 168 阅读 · 0 评论 -
策略模式
策略模式的定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 策略模式的使用场景 出现同一抽象有多个子类,而又需要使用if-else或者switch-case来选择具体子类时。策略模式的UML图: 来看示例: //抽象产品 abstract class AudiCar{ private String n原创 2017-07-14 15:27:52 · 191 阅读 · 0 评论 -
命令模式
命令模式介绍 命令模式,是行为型设计模式之一。命令模式相对于其他的设计模式来说并没有那么多的条条框框,其实它不是一个很规矩的模式,不过,就是基于这一点,命令模式相对于其他的设计模式更为灵活多变。我们接触比较多的命令模式大多数是程序菜单命令。如关机,系统会执行暂停处理,保存系统配置,然后结束程序进程,最后调用内核命令关闭计算机等。 命令模式的定义 将一个请求封装成一个对象,从而让用户使用不同的请原创 2017-07-20 11:05:11 · 206 阅读 · 0 评论 -
状态模式
状态模式介绍 状态模式中的行为是由状态来觉定的,不同的状态下有不同的行为。状态模式和策略模式的结构几乎一样的,但它们的目的、本质却不一样。 状态模式的定义 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式的的UML类图 源码示例: 抽象状态类public interface VoteState {public void vote(String user,原创 2017-07-17 10:59:09 · 209 阅读 · 0 评论 -
观察者模式
观察者模式介绍 观察者模式是一个使用率很高的模式,它最常用的地方是GUI系统,订阅–发布系统。因为这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。 观察者模式的定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 观察者模式的使用场景 关联行为场景,需要注意的是,关联行为是可拆分的,原创 2017-07-21 11:42:44 · 196 阅读 · 0 评论 -
责任链模式
责任链模式介绍 责任论模式,是行为型设计模式之一。什么是链,我们将多个节点首尾相连所构成的模型称为锁链,对于链式结构,每个节点都可以被拆开在连接,因此,链式结构也可以具有很好的灵活性。 责任链模式的定义 使多个对象都有处理请求,从而避免了请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到有对象处理它为止。 责任链模式的使用场景 多个对象可以处理同一请求,但原创 2017-07-18 11:17:01 · 223 阅读 · 0 评论 -
java 代理模式
java代理模式分为: 静态代理:代理类,接收要代理类的实例,在代理类的方法里面,通过要代理类的实例,调用它的方法实现代理。 public interface Foo { //接口 void foo(); } //实现类 public class FooImpl implements Foo { public void foo() { ...原创 2019-09-22 16:54:32 · 100 阅读 · 0 评论