设计模式
handsome-h
慈不掌兵,情不立事,义不理财,善不为官。
展开
-
设计模式简介
简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 ...原创 2019-06-29 18:04:44 · 122 阅读 · 0 评论 -
设计模式——解释器模式
文章目录定义结构优缺点适用场景注意事项 定义 给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。 类型:行为类模式 类图: 解释器模式是一个比较少用的模式。 结构 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作。具体解释任务由它的各个实现类来完成,具体的解释器分别由终结符解释...原创 2019-08-09 13:28:49 · 113 阅读 · 0 评论 -
设计模式——迭代器模式
文章目录定义结构优缺点适用场景 定义 提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 类型:行为类模式 类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧: public static void print(Collection coll){ Iterator it = col...原创 2019-08-09 13:20:00 · 109 阅读 · 0 评论 -
设计模式——策略模式
文章目录定义 定义 定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。 类型:行为类模式 类图: 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,对照类图可以看到,策略模式与模版方法模式的区别仅仅是多了一个单独的封装类Context,它与模版方法模式的区别在...原创 2019-08-09 11:48:20 · 105 阅读 · 0 评论 -
设计模式——责任链模式
文章目录定义结构优缺点适用场景总结 定义 使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 类型:行为类模式 类图: 首先来看一段代码: public void test(int i, Request request){ if(i==1){ Handler1...原创 2019-08-09 09:40:19 · 188 阅读 · 0 评论 -
设计模式——命令模式
文章目录定义结构优点适用场景总结 定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 类型:行为类模式 类图: 结构 顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构: Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。 Con...原创 2019-08-09 09:24:43 · 123 阅读 · 0 评论 -
设计模式——访问者模式
文章目录定义优点适用场景总结 定义 封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 类型:行为类模式 类图: 访问者模式可能是行为类模式中最复杂的一种模式了。我们首先来看一个简单的例子,代码如下: class A { public void method1(){ System.out.println...原创 2019-08-09 08:13:55 · 145 阅读 · 0 评论 -
设计模式——观察者模式
文章目录定义结构优点总结 定义 对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 类型:行为类模式 类图: 在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠标右键,就会弹出一个菜单;再比如,我们要设计一个自动部署的功能,就像ecl...原创 2019-08-09 08:00:26 · 119 阅读 · 0 评论 -
设计模式——中介者模式
文章目录定义结构为什么要使用中介者模式优点使用场景 定义 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 类型:行为类模式 类图: 结构 中介者模式又称为调停者模式,从类图中看,共分为3部分: 抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类之间的通信。一般包括一个或几个抽象的事件方法,并由子类去实现...原创 2019-08-09 07:48:24 · 140 阅读 · 0 评论 -
设计模式——模板方法模式
文章目录定义结构优点使用场景 定义 定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 类型:行为类模式 类图: 事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打...原创 2019-08-09 07:33:24 · 272 阅读 · 0 评论 -
设计模式——创建类模式总结
创建类模式主要关注对象的创建过程,将对象的创建过程进行封装,使客户端可以直接得到对象,而不用去关心如何创建对象。 创建类模式有5种,分别是: 单例模式(Singleton Pattern) 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) ...原创 2019-08-08 23:13:12 · 94 阅读 · 0 评论 -
设计模式——原型模式
文章目录定义优点使用场景注意事项 定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用...原创 2019-08-08 23:07:23 · 113 阅读 · 0 评论 -
设计模式——建造者模式
文章目录定义四个要素优点建造者模式与工厂模式的区别总结 定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:创建类模式 类图: 四个要素 产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实...原创 2019-08-08 22:48:45 · 104 阅读 · 0 评论 -
设计模式——抽象工厂模式
文章目录定义抽象工厂模式与工厂方法模式的区别优点缺点适用场景总结 定义 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 类型:创建类模式 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。 他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中...原创 2019-08-08 22:32:57 · 110 阅读 · 0 评论 -
设计模式——工厂方法模式
文章目录定义优点要素适用场景典型应用 定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 类型:创建类模式 工厂模式根据抽象程度的不同分为三种: 简单工厂模式(也叫静态工厂模式) 本文所讲述的工厂方法模式 以及抽象工厂模式 工厂方法模式代码: interface IProduct { public void productMe...原创 2019-08-08 21:07:45 · 159 阅读 · 0 评论 -
设计模式——单例模式
文章目录定义优点适用场景注意事项 定义 确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式根据实例化对象时机的不同分为两种: 饿汉式单例 在单例类被加载时候,就实例化一个对象交给自己的引用; public class Singleton { private static Singleton singleton = new Singleton(); ...原创 2019-08-08 20:28:47 · 89 阅读 · 0 评论 -
设计模式的六大原则
开闭原则(Open Close Principle) 开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。 里氏代换原则(Liskov Substitution Principle) 里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说...原创 2019-06-29 18:12:52 · 96 阅读 · 0 评论 -
设计模式——备忘录模式
文章目录定义结构优缺点使用场景 定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。 类型:行为类模式 类图: 我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来进...原创 2019-08-09 13:44:31 · 148 阅读 · 0 评论