Java全解:23种设计模式深度剖析

需积分: 13 3 下载量 97 浏览量 更新于2024-07-30 收藏 1017KB PDF 举报
"Java的23种设计模式(疯狂Java总结)" Java设计模式是软件工程中的一种重要思想,它代表了在解决特定问题时的最佳实践。疯狂Java联盟版的总结涵盖了全部23种设计模式,旨在帮助开发者更好地理解和应用这些模式。设计模式是经验丰富的程序员在面对相似问题时反复使用的解决方案的模板,它们可以提高代码的可读性、可维护性和复用性。 1. 创建型模式(Creational Patterns): - 工厂方法(Factory Method):提供一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。 - 抽象工厂(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 - 建造者模式(Builder):将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 - 原型模式(Prototype):通过复制已有对象来创建新对象,而不是通过构造函数。 2. 结构型模式(Structural Patterns): - 适配器模式(Adapter):将一个类的接口转换成客户希望的另一个接口。适配器使原本接口不兼容的类可以一起工作。 - 桥接模式(Bridge):将抽象部分与实现部分分离,使它们可以独立变化。 - 组合模式(Composite):允许你将对象组合成树形结构,表现得像单个对象。 - 装饰模式(Decorator):动态地给一个对象添加一些额外的职责,可以独立地增加功能而不影响其他对象。 - 外观模式(Facade):为子系统提供一个统一的接口,使得子系统的复杂性对外隐藏。 - 享元模式(Flyweight):使用共享对象,可以有效地支持大量细粒度的对象。 - 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 3. 行为型模式(Behavioral Patterns): - 责任链模式(Chain of Responsibility):将请求沿着处理者链传递,直到被某个对象处理。 - 命令模式(Command):将请求封装为一个对象,以便使用不同的请求、队列请求或支持撤销操作。 - 解释器模式(Interpreter):给定一种语言,定义其文法的一种表示,并提供一个解释器,用于解释该语言中的句子。 - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,且可以独立地改变它们之间的交互。 - 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后恢复对象的状态。 - 观察者模式(Observer):定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - 状态模式(State):允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 - 策略模式(Strategy):定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式让算法独立于使用它的客户端。 - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变元素类的前提下定义作用于这些元素的新操作。 这些设计模式并非孤立存在,它们可以相互结合,以应对复杂的软件开发需求。通过理解并熟练运用这些模式,开发者能够写出更灵活、可扩展和易于维护的代码。在实际开发中,选择适合的模式可以提升软件设计的质量和效率。
2023-05-29 上传
Java设计模式〔疯狂Java联盟版〕 目录 1. 设计模式3 1.1 创立型模式4 1.1.1 工厂方法4 1.1.2 抽象工厂6 1.1.3 建造者模式10 1.1.4 单态模式13 1.1.5 原型模式15 1.2 构造型模式17 1.2.1 适配器模式17 1.2.2 桥接模式19 1.2.3 组合模式23 1.2.4 装饰模式26 1.2.5 外观模式29 1.2.6 享元模式32 1.2.7 代理模式34 1.3 行为型模式37 1.3.1 责任链模式37 1.3.2 命令模式40 1.3.3 解释器模式43 1.3.4 迭代器模式45 1.3.5 中介者模式49 1.3.6 备忘录模式52 1.3.7 观察者模式54 1.3.8 状态模式58 1.3.9 策略模式61 1.3.10 模板方法63 1.3.11 者模式65 1. 设计模式(超级详细) 内容简介 有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心得,故笔者 *写二十三种设计模式的简单例子、 并整理二十三种设计模式的理论局部,综合汇总成这份Java设计模式〔疯狂J*va联盟版 〕,希望对大家有所帮助。 本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模 *的组成局部,并附带有简单的例 子和类*,目的是为了让读*了解二十三种*计模式,并能方便的查阅各种设计模*的用法 及注意点。 所附的例子非常简单,慢慢的引导读者从浅到深了解设计模式,并能从中享受设计的乐 趣。 由于每个人对设计*式的理解都不尽一致,因此,可能本文档的例子*有不恰当的地方, 还望各位读者指出不恰当的地方。 欢送登录疯狂J*va联盟进展技术交流,疯狂Java联盟的论坛宗旨是: 所有的技术发帖,均有回复。 疯狂Java联盟.crazyit.org 笔者简介 笔者曾师从李刚教师学习Java,现居**。对Java软件开发、各种Java开源技术都非常感 兴趣,曾参与开发、主持*发过大 量Java、Java EE工程,对Java、Java *E工程有一定认识*见解。欢送大家与笔者就Java、Java EE相*方面进展技术交流。 笔者现为疯狂Jav*联盟的总版主〔论坛ID:杨恩雄〕,也希望通过该平台与大家分享Ja va、Java EE技术、*得。 本人:yangen*iong163. 声明 本文档编写、制作过程中得到了疯狂Java联盟、以及笔者学习工作过程大量朋友的支持 ,大家都抱着一个目的:为国内软件 软件开发事业作出绵薄奉献。 我们在此*重宣布,本*档遵循Apache 2.0协议。在完整保存全部文本(包括本页),并且不违反Apache 2.0协议的前提 下,允许和鼓励任何人进展全文及推广,我们放弃除署名权外的一切权利。 1.1 创立型模式 AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) Builder ( 建造者模式 ) Protot*pe * 原型模式 ) 1.1.1 工厂方法 *义一个用于创立对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的 实例*延迟到其子类。 适用性 1.当一个类不知道它所必须创立的对象的类的时候。 2.当一个类希望由它的子类来指定它所创立的对象的时候。 3.当*将创立对象的职责委托给多个帮助*类中的*一个,并且*希望将哪一个帮助子类是 代理者这一信息局部化的时候。 参与者 1.Product 定义工厂方法所创立的对象的接口。 2.ConcreteProduct 实现Product接口。 3.Creator 声明工厂方法,该方法返回一个Product类型的对象* Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象 。 可以调用工厂方法以创立一个Product对象。 4.ConcreteCreator 重定义工厂方法以返回一个ConcreteProduct实例。 类图 例子 *roduct public interface Work { void doWork(); } ConcreteProduct public class StudentWork implements Work { public void doWork() { System.out.println("学生*作业!"); } } public class TeacherWork implements Work { public void doWork() { System.out.println("教师审批作业!"); } } Creator public interface IWorkFactory { Wo