![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java设计模式
Java经验分享网
http://www.javagogo.cn
展开
-
设计模式-抽象工厂模式
简介:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。总结:工厂模式->一种工厂,多种对象;抽象工厂模式->一种抽象工厂,多种工厂,每个工厂可以生产多种对象。代码示例:interface Animals { void name();}class Cat implements Animals { @Override pub...转载 2019-12-07 09:44:27 · 131 阅读 · 0 评论 -
设计模式-享元模式
运用共享技术有效地支持大量细粒度的对象。总结:重用现有的同类对象,若未找到匹配的对象,则创建新对象。例如,数据库的连接池,减少对象的创建,降低系统内存,提高效率。public class Flyweight{ public static void main(String[] args){ //red Circle默认存在,所以拿的时候不用new ...转载 2019-12-07 09:43:22 · 123 阅读 · 0 评论 -
设计模式-组合模式
将对象组合成树形接口以表示“部分-整体”的层次接口。组合模式使得用户对单个对象和组合对象的使用具有一致性。总结:创建了一个包含自己对象组的类,并提供修改对象组的方法。应用场景,如树形菜单、文件、文件夹的管理。public class Composite{ public static void main(String[] args){ Person per...转载 2019-12-07 09:42:20 · 127 阅读 · 0 评论 -
设计模式-桥接模式
将抽象部分于实现部分分离,使它们都可以独立的变化。总结:通过对Bridge类的调用,实现了对同一接口下不同实现类的调用,建立一个继承于同一抽象的不同实现类之间的关联关系,这个关系由Brigde类桥接起来。public class Bridge{ public static void main(String[] args){ AnimalsBridge b...转载 2019-12-07 09:41:26 · 117 阅读 · 0 评论 -
设计模式-外观模式
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口是得这一子系统更加容易使用。总结:在客户端和复杂系统之间再加一层,在这一层中将调用顺序、依赖关系等处理好,提供一个容易使用的外观层。public class Facade{ public static void main(String[] args){ Computer comp...转载 2019-12-07 09:40:22 · 72 阅读 · 0 评论 -
设计模式-代理模式
为其它对象提供一种代理以控制对这个对象的访问。总结:创建类的代理类,间接访问被代理类的过程中对其功能加以控制,例如在某个函数执行前后添加额外功能。(代理例子:买火车票不一定在火车站买,也可以去代售点)。和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制,“形式”虽然相似,“语义”却截然不同,起中介作用。public class Proxy{ public st...转载 2019-12-07 09:39:15 · 87 阅读 · 0 评论 -
设计模式-装饰器模式
动态的给一个对象添加一些额外的职责,就增加功能来说,装饰器模式相比生成子类更为灵活。总结:创建类的装饰类,对被装饰类增强功能。装饰模式是继承的一个替代模式。public class Decorator{ public static void main(String[] args){ Animals dog = new AnimalsDecorator(n...转载 2019-12-07 09:38:12 · 77 阅读 · 0 评论 -
设计模式-适配器模式
将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。总结:衔接两个不兼容、独立的接口的功能,使得它们能够一起工作。适配器起中介作用。public class Adapter{ public static void main(String[] args){ //兼容了高级功能的普通播放器 ...转载 2019-12-07 09:37:09 · 69 阅读 · 0 评论 -
设计模式-解释器模式
给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。总结:自己定义一种语言或表达式(附对应的解释器),用来表示一些复杂的频繁发生的行为。例如:正则表达式的解释,sql语句的解释。使用场景极少,会一起效率、性能、维护等问题。public class Interpreter { public static void main(String[] a...转载 2019-12-07 09:35:58 · 81 阅读 · 0 评论 -
设计模式-中介者模式
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。总结:中介者对象,用来封装关联对象之间的交互操作,使关联对象之间耦合度松散;例如,MVC模式中“控制器”就是“模型”和“视图”的中介者;适配器模式为了桥接互补兼容的接口,中介者为了分离原始接口和交互行为。public class Mediator { pu...转载 2019-12-07 09:34:39 · 68 阅读 · 0 评论 -
设计模式-访问者模式
主要将数据结构与数据操作分离。总结:在被访问的类里面加一个对外提供接待访问者的接口(如下面的accept()方法)。凤纹着封装了对被访问者结构的一些杂乱操作,避免这些操作“污染”被访问者,解耦结构与算法,同时具有优秀的扩展性。public class Visitor { public static void main(String[] args) { Compu...转载 2019-12-06 11:05:32 · 83 阅读 · 0 评论 -
设计模式-状态模式
允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。总结:对象具有多种状态,且每种状态具有特定的行为;应用场景:行为随状态改变而改变,代码形式似乎也和哪种设计模式相似,但是设计模式提倡的是思想,而不是形式。public class StateDemo { public static void main(String[] args) { QQCo...转载 2019-12-06 11:04:32 · 86 阅读 · 0 评论 -
设计模式-备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。总结:创建一个备忘录类,用来存储原始类的信息,同时创建备忘录仓库类,用来存储备忘录类,当然,原始类和备忘录类的对应关系要处理好。public class MementDemo{ public static void main(String[] args) { Originator ori...转载 2019-12-06 11:03:27 · 66 阅读 · 0 评论 -
设计模式-命令模式
将一个请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化。总结:三种角色(调用者->接收者->命令),解耦行为请求者和行为实现者,实现请求和执行分开,调用者选择命令发布,命令直定执行者。public class CommandDemo{ public static void main(String[] args){ Receiver...转载 2019-12-06 11:02:04 · 71 阅读 · 0 评论 -
设计模式-责任链模式
避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到又对象处理它为止。总结:在Handler类里面聚合自己,形成一条Handler链(或树、环等),并且可以将请求往下一个Handler传递(只允许传给另一个,而不允许传给多个)。例子:struts拦截器,filter过滤器。public class Chain_of_Respon...转载 2019-12-06 10:34:38 · 67 阅读 · 0 评论 -
迭代器模式
提供一种方法顺序访问一个聚合对象中各个元素,而又无需暴漏该对象的内部表示。总结:Java中的iterator的简单实现原理。将聚合类中遍历各个元素的行为分离出来,封装成迭代器,让迭代器来处理遍历的任务,使简化聚合类,同时又不暴露聚合类的内部。public class IteratorDemo{ public static void main(String[] args){ ...转载 2019-12-06 10:33:29 · 65 阅读 · 0 评论 -
设计模式-观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。总结:一个对象(被观察者)状态变化时,通知所有依赖于它的对象(观察者),这种依赖方式具有双向性,观察者指定被观察的对象,或者被观察对象添加观察者。public class Observer{ public static void main(String[] args){ ...转载 2019-12-06 10:32:09 · 88 阅读 · 0 评论 -
设计模式-模板方法模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。总结:将一些固定步骤、固定逻辑的方法封装成模板方法。调用模板方法即可完成哪些特定的步骤。例如,spring中对hibernate的事务管理,开启session、关闭session等固定步骤不需要重复写,直接丢给一个实体保存。public class Template...转载 2019-12-06 10:30:53 · 83 阅读 · 0 评论 -
设计模式-策略模式
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。总结:统一接口下的一系列算法类(多种策略),用一个类将其封装起来,使它们(多种策略)可动态切换。和工厂模式的区别:工厂模式是创建型模式,是为了创建不同的对象,而策略模式是行为模式,为了选择不同的行为。public class Strategy{ public static void main(String[] arg...转载 2019-12-06 10:29:18 · 96 阅读 · 1 评论