
------【设计模式】
文章平均质量分 82
「已注销」
战斗意志!
展开
-
设计模式之--依赖倒置原则
依赖倒置原则所谓依赖倒置原则,就是不论工厂还是产品都应该依赖于抽象,而不是具体实现类。听起来更像是“针对接口编程,而不是针对实现编程”,但是这里依赖倒置原则更强调“抽象”的概念,不要让高层组件依赖低层组件,更不能依赖具体实现类,都要依赖于抽象。依赖倒置原则的核心在于“面向接口编程”,目的在于”解耦“。这里的倒置是什么意思呢?依赖倒置原则中的倒置是指我们的思想要和一般的“自顶向下”结构化设计原创 2015-11-01 09:13:42 · 3967 阅读 · 4 评论 -
动态代理
1、什么是动态代理? 动态代理就是在运行时生成一个类,这个类会实现你指定的一组接口,而这个类没有.java文件,是在运行时生成的,你也不用去关心它是什么类型的,你只需要知道它实现了哪些接口即可。 平常实现一个接口需要写一个具体的实现类,而动态代理技术能够在运行期间动态的生成实现指定接口的实现类对象,底层使用的反射原理。在框架中经常使用,例如:Struts1、Struts2、原创 2016-06-05 00:47:01 · 797 阅读 · 6 评论 -
享元模式
1、什么是享元模式? 享元模式(Flyweight Pattern):以共享的方式高效的支持大量的细粒度对象。通过复用内存中已存在的对象,降低系统创建对象实例的性能消耗。 享元的英文是Flyweight,是一个来自体育方面的专业用语,在拳击、摔跤和举重比赛中特指最轻量的级别。把这个单词移植到软件工程中,也是用来表示特别小的对象,即细粒度的对象。至于为什么把Flyweight翻译原创 2016-05-23 00:10:08 · 2570 阅读 · 6 评论 -
命令模式
1、什么是命令模式? 命令模式(Commond Pattern):将来自客户端的请求封装为一个对象,无需了解这个请求激活的动作或有关接受这个请求的处理细节。命令模式的根本目的在于将“请求者”与“实现者”之间解耦。 其实命令模式和其他许多设计模式一样,就是在请求者和实现者中间加一个中间人的角色,来达到解除耦合的目的。通过对中间人的特殊设置,从而形成不同的设计模式,命令模式也不例外原创 2016-05-22 21:13:46 · 835 阅读 · 4 评论 -
迭代器模式
1、什么是迭代器呢? 迭代器是一种取出元素的方式,也就是遍历某一元素集合内元素的方式。我们平常对于数组的遍历方式是通过下角标利用for循环等来操作数据,元素集合不止数组一种,例如还有ArrayList(底层为数组)、LinkedList(底层为链表)、HashSet(使用hash表)等,每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么针对这些集合遍历就要分别使用对应的原创 2016-05-10 00:15:58 · 1858 阅读 · 2 评论 -
抽象工厂模式
抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一个产品族。抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,其属于对象创建型模式。 抽象工厂模式中包含四个角色:抽象工厂用于声明生成抽象产品的方法;具体工厂实现了抽象工厂声明的生成抽象产品的方法,生成一组具体产品原创 2016-05-09 18:47:23 · 1653 阅读 · 4 评论 -
设计模式概述
1、什么是设计模式? 设计模式这个词是首先出现在建筑行业的,是因为在20世纪70年代,Christopher Alexander发现许多建筑非常类似,然后想是不是用同一图纸能够在不同的地点建造出相类似的建筑,之后他发表了很多关于工程和建筑模式方面的书籍。于是,软件行业逐渐接纳了这种最初建立于工程和建筑方面的模式思想,发展出了软件业中的设计模式,软件业中模式概念的普及是由GoF合著的书引发的。原创 2015-10-20 11:08:49 · 988 阅读 · 9 评论 -
设计模式之--简单工厂模式
简单工厂模式属于创建型模式,所以是关于创建对象的,举例说明: 需求:创建动物中的猫、狗对象。 首先绘制简单工厂模式的类图: 下面进行代码实现,通过一般方法和应用简单工厂模式方法的代码进行对比,研究简单工厂方法的实际应用与意义: 1、按照一般方法创建猫、狗对象://主类public class AnimalTest { public static void ma原创 2015-10-20 15:14:27 · 1253 阅读 · 11 评论 -
设计模式之--工厂方法模式
在上一篇《设计模式之--简单工厂模式》中,遗留了一个问题:如果我们还要创建鱼的对象,那么我就要去添加鱼这个类,然后去更改工厂类,添加创建鱼的对象的方法,那么,这样就违背了面向对象的设计原则:开闭原则(对修改关闭,对扩展开放)。那么,怎么才能添加了新类 iu,又不用去修改代码呢?原创 2015-10-21 08:23:38 · 1322 阅读 · 11 评论 -
设计模式之--单例模式
1、什么是单例模式? 单例模式也属于创建型模式,所以也是用于创建对象的,顾名思义,“例”是“实例”的意思,“单”是“单独、唯一”的意思,所以单例模式就是指使类在内存中只能有一个对象的模式。2、单例模式的应用? 单例模式在线程池、数据库连接池、网站计数器等其他地方中被应用,因为每次创建线程和数据库连接是相对而言比较麻烦的,所以我们可以只创建一次,然后对其进行重复使用,当被使用完毕之后原创 2015-10-21 16:34:44 · 2545 阅读 · 7 评论 -
设计模式之--装饰模式
1、写在前面:为什么会有装饰模式? 装饰模式是为了解决继承强依赖性和出现大量子类不方便管理问题而出现的。 举例:大家都有自己的手机,而打电话时手机必须具备的基本功能。如果用代码实现的话,按照正常做法,我们首先定义手机类,具有打电话功能。但是随着发展,需求变化了,假设现在部分人们要求打电话要有彩铃,接下来如何设计? 我们利用以前学过的继承,新建彩铃手机类继承手机类可以具备父类的打电原创 2015-10-22 10:56:44 · 1153 阅读 · 10 评论 -
设计模式之--模板方法模式
1、什么是模板方法模式? 官方解释:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 设计模式大咖闫宏解释:模板方法模式是类的行为型模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑原创 2015-10-23 16:51:06 · 1711 阅读 · 12 评论 -
动态代理解决网站字符集编码
1、首先看一个装饰模式解决字符集编码问题 我们使用装饰者对request进行增强,从而使得get和post使用request.getParameter()获得的数据没有乱码: 首先来一个Servlet,用于处理客户端请求:package 装饰者模式解决乱码;import java.io.IOException;import javax.servlet.ServletE原创 2016-06-05 01:04:41 · 1064 阅读 · 5 评论