![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java设计模式
小小问号
一般般的程序员
展开
-
java设计模式(六)——装饰模式
对一个已经存在的类进行修饰,采用的方法为:如果A类装饰B类(前提:A类、B类继承同一个接口),则使A类持有B类的实例(句柄),然后A类中复写B类中同名的方法,在方法中调用B类中该同名的方法,然后再该方法调用之前或之后加入一些其他的操作。这样就能造成对B类中的方法进行装饰的效果。原创 2017-10-07 21:44:13 · 161 阅读 · 0 评论 -
java设计模式(四)——建造者模式
由前面博文《java设计模式(一)——普通工厂模式》中提到的多个工厂方式模式。在工厂类中定义成员变量List,泛型为接口类型。实例提供方法传入参数size,根据size向list中添加实例个数。最终返回list。建造者模式主要将各实例类型进行集中式管理,一次返回多个实例。与工厂模式的区别在于,工厂模式关注的是创建单个实例,而建造者模式则关注创建复合实例(较为复杂的实例)。因此,选择何种原创 2017-10-03 21:41:53 · 175 阅读 · 0 评论 -
java设计模式(三)——单例模式
在JAVA应用中,单例模式能保证在同一个JVM中,该对象只会创建一个实例。单例模式的特点:1、单例类智能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。单例模式的好处:1、对于一些大型的对象,避免频繁的创建实例,这样能较大的节省系统开销,也有利于java的垃圾回收(GC garbage collection)。2、控原创 2017-10-03 16:37:52 · 177 阅读 · 0 评论 -
java设计模式(一)——普通工厂模式
1、普通工厂模式:建立一个工厂类,提供公共方法,通过传入的参数针对不同的接口实现类,返回接口类型(实例为不同的接口实现类对应的实例)。2、多个工厂方法模式:将普通工厂模式中的公共方法根据不同的接口实现类分拆成不同的方法,返回接口类型(实例为不同的接口实现类对应的实例)。3、静态工厂方法模式:将普通工厂模式、多个工厂方法模式中的公共方法修改为静态方法,不用创建工厂实例,直接调用。原创 2017-10-03 01:36:14 · 237 阅读 · 0 评论 -
java设计模式(二)——抽象工厂模式
所谓抽象工厂模式,是由于普通工厂模式无法满足设计模式的基本原则之“开闭原则”,及对扩展开发,对修改关闭。因此衍生出一种新的工厂模式,将工厂类抽象成接口(或者抽象类),然后每个具体的接口实现类都提供一个工厂类(实现或继承工厂接口或抽象类)。如此,如果需要新增加一个方法,只需要增加一个新的工厂类直接实现或继承工厂接口或抽象类即可,无需修改其他代码。原创 2017-10-03 01:04:38 · 148 阅读 · 0 评论 -
java设计模式(十八)——备忘录模式(Memento)
就是使用另外一个类来记住当前对象个属性的值,代码实现逻辑非常简单。主要适用在需要抓取历史某个时期对象数据的情况下。其他没什么可说的。原创 2017-10-09 17:22:43 · 197 阅读 · 0 评论 -
java设计模式(十七)——命令模式(Command)
所谓命令模式,在现实中,命令一个都由领导者发出,由领导者的下属,以及下属的下属等去执行。实际在这一整套机制中,我们可以将设计的若干人分为两类,一类是命令的发出者(领导者),另一类就是命令的执行着。当然这些命令的执行者又根据每个人的角色分工不同,分为命令的传递者,命令的分发者,已经命令的执行者等。这些命令的执行者们都各自执行者各自的内容,而不互相耦合,这就是命令模式的关键点。举个例子,你们公司部原创 2017-10-09 16:37:16 · 183 阅读 · 0 评论 -
java设计模式(十六)——责任链模式(Chain of Responsibility)
责任链模式:有多个对象(两个以上,这些对象都是同一个类的对象),想象一下,将这多个对象排成一个序列,然后每个对象都持有序列中下个对象的引用(句柄),这样就组成了一个链式结构。如果每一个对象在自己的操作方法中,使用下一个对象的句柄调用下一个对象的操作方法,这样就将该操作一级一级的传递下去了,这就是责任链模式。外部调用者并不知道最后的实现操作是由哪一个对象去完成。并且这个链式的结构还可以组成环式或原创 2017-10-09 15:45:03 · 174 阅读 · 0 评论 -
java设计模式(十五)——迭代子模式(Iterator)
迭代子模式,就是对集合类的遍历访问,具体实现为:将集合对象转换为有下标的数组,然后根据数组下标逐个访问集合对象中的元素。可通过对下标元素的控制,实现向前访问,向后访问,获取第一个元素,最后一个元素,判断是否是最后一个元素等操作。原创 2017-10-09 15:21:03 · 229 阅读 · 0 评论 -
java设计模式(十四)——观察者模式(Observer)
观察者模式,也就是说一个对象在观察另一个对象的变更(其实是一个对象对另外一个对象的依赖,因为依赖,所以需要观察)。需要说明的是,这种观察是一对多的,一个对象可以观察多对象,一个对象也可以被多个对象观察。从概念的解释上来说,是观察,而从模式实现上来讲,其实是刚好反过来的模式,如果被观察者发生了变化,那么需要通知观察者。或者说,这是一种被动的观察。由被观察者管理观察者(新增或者删除观察者,所有原创 2017-10-09 14:48:07 · 190 阅读 · 0 评论 -
java设计模式(十三)——模板方法模式(Template Method)
模板方式模式,在多态的基础上,做了一点小小的变更。即,定义一个抽象类,其中包含两个方法,方法A(抽象方法),方法B(实际方法,但在方法B中调用方法A)。然后使用不同的子类去继承该抽象类,并实现方法A。这样在使用给个子类去调用方法B的时候,在方法B中所调用到的方法A是有各子类自己所实现的方法A。原创 2017-10-09 14:22:41 · 149 阅读 · 0 评论 -
java设计模式(十二)——策略模式(Strategy)
所谓的策略模式,其实就是对java基本特点(多态)的实现罢了。定义一个接口,然后由不通过的子类去实现该接口。这样,对于调用者来说,使用不同的子类去调用该方法,得到的效果是不同的,也可以增加一个抽象辅助类来提供一些辅助方法。原创 2017-10-09 14:06:04 · 140 阅读 · 0 评论 -
java设计模式(十一)——享元模式(Flyweight)
享元模式,可以理解为jdbc中常使用的连接池技术。使用工厂模式创建一定量的对象元,需要使用时获取,使用完后释放。以此实现对象元的共享。可以节省对象创建和销毁的时间,提升系统性能。原创 2017-10-07 23:57:38 · 171 阅读 · 0 评论 -
java设计模式(十)——组合模式(Composite)
组合模式,也可以说是部分-整体模式,主要用于处理类似树形结构的问题。一个对象中包含着其他对象,就像树有分支,树的分支还可能有分支,一次类推,只到叶子节点(内部不包含对象)。此设计模型称为组合模式。个人理解的还不很透彻,感觉是一种迭代模式。后续补足。原创 2017-10-07 23:44:54 · 157 阅读 · 0 评论 -
java设计模式(九)——桥接模式(Bridge)
桥接模式,顾名思义,就是为两个需要关联的事物之间定义一个桥接的标准,任何实现类,只要能实现该接口,就可以作为两个事物之间的关联桥来使用。在此模式下,不同的实现类,可能采用完全不同的方式去建立两者的连接,但是这对于通过该桥建立连接的两个事物来说是完全透明的。原创 2017-10-07 23:21:28 · 159 阅读 · 0 评论 -
java设计模式(八)——外观模式
通常我们对一件事情的一个操作,可能涉及到很多的内部操作,但是作为用户来说,并不需要清楚的知道内部的每一个操作,这个时候就用到了外观模式。举个例子,你去学校食堂点一份红烧肉套餐(内含一份红烧肉、一份米饭、一份青菜、一份西红柿鸡蛋汤)。这个时候你只关心买一份红烧肉套餐,也就是说只设计一个食堂窗口类,并提供一个买饭接口供你调用即可(可能需要你参入套餐名:红烧肉套餐)。但实际上这个接口内部需要原创 2017-10-07 22:36:42 · 164 阅读 · 0 评论 -
java设计模式(七)——代理模式(Proxy)
代理模式的实现机制和前面提到的装饰模式是一样的,也同样是两个实现了同一个接口的类,其中一个类持有另外一个类的实例,然后再同名方法中调用另一个类的方法,在调用方法之前或之后做一些其他的操作。这里特别提一下代理模式与装饰模式的区别:1、装饰模式,是针对原类的扩展,在原类的基础上增加以下其他的操作。具体来说,调用者先创建原类的实例,然后传参给装饰类。2、代理模式,是针对原类的限制访问。有代理原创 2017-10-07 22:17:41 · 140 阅读 · 0 评论 -
java设计模式(五)——适配器模式
适配器模式分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。1、类的适配器模式:使用A类继承B类的同时实现C接口,从而使得C接口可以调用B类中的方法。2、对象的适配器模式:将类的适配器模式中A类继承B类改成A类持有B类的实例(通过B类的实例调用B类的方法)。3、接口的适配器模式:某些情况下,我们需要实现一个接口,但是这个接口中有太多的方法是我们不需要原创 2017-10-04 00:32:52 · 153 阅读 · 0 评论