java 设计模式整理(方便记忆)

1

创建型模式
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

工厂模式(Factory Pattern)  :定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类.   

抽象工厂模式(Abstract Factory Pattern):提供一个接口, 用于创建相关或依赖对象的家族,而不需要指定具体类

单例模式(Singleton Pattern):确保一个类只有一个实例, 并提供全局访问点

建造者模式(Builder Pattern):使用生成器模式封装一个产品的构造过程,并允许按步骤构造.将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

原型模式(Prototype Pattern):当创建给定类的实例过程很昂贵或很复杂时,就使用原形模式


2

结构型模式
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

适配器模式(Adapter Pattern):将一个类的接口, 转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间.对象适配器使用组合,类适配器使用多重继承

桥接模式(Bridge Pattern):使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变

过滤器模式(Filter、Criteria Pattern): 这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。

组合模式(Composite Pattern):允许你将对象组合成树形结构来表现"整体/部分"层次结构.组合能让客户以一致的方式处理个别对象以及对象组合.

装饰器模式(Decorator Pattern):动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案.

外观模式(Facade Pattern):提供了一个统一的接口, 用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.

享元模式(Flyweight Pattern):如想让某个类的一个实例能用来提供许多"虚拟实例",就使用蝇量模式.

代理模式(Proxy Pattern):为另一个对象提供一个替身或占位符以控制对这个对象的访问


3

行为型模式
这些设计模式特别关注对象之间的通信。

责任链模式(Chain of Responsibility Pattern):通过责任链模式, 你可以为某个请求创建一个对象链.每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象

命令模式(Command Pattern):"请求"封闭成对象,以便使用不同的请求,队列或者日志来参数化其他对象.命令模式也支持可撤销的操作.

解释器模式(Interpreter Pattern):使用解释器模式为语言创建解释器.

迭代器模式(Iterator Pattern):提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示

中介者模式(Mediator Pattern):使用中介者模式来集中相关对象之间复杂的沟通和控制方式.

备忘录模式(Memento Pattern):当你需要让对象返回之前的状态时(例如,你的用户请求"撤销"),你使用备忘录模式.

观察者模式(Observer Pattern):在对象之间定义一对多的依赖,这样一来, 当一个对象改变状态, 依赖它的对象都会收到通知,并自动更新.

状态模式(State Pattern):允许对象在内部状态改变时改变它的行为,对象看起来好象改了它的类

空对象模式(Null Object Pattern):在空对象模式(Null Object Pattern)中,一个空对象取代NULL 对象实例的检查。Null对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null对象也可以在数据不可用的时候提供默认的行为。

策略模式(Strategy Pattern):定义了算法族, 分别封闭起来, 让它们之间可以互相替换, 此模式让算法的变化独立于使用算法的客户.

模板模式(Template Pattern):在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤

访问者模式(Visitor Pattern):当你想要为一个对象的组合增加新的能力,且封装并不重要时,就使用访问者模式.


4

J2EE 模式
这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。

MVC 模式(MVC Pattern):MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发

业务代表模式(Business Delegate Pattern) :用于对表示层和业务层解耦。它基本上是用来减少通信或对表示层代码中的业务层代码的远程查询功能

组合实体模式(Composite Entity Pattern) :用在EJB 持久化机制中。一个组合实体是一个EJB 实体bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象beans 会自动更新,因为它们是由EJB 实体bean 管理的。以下是组合实体bean 的参与者。

数据访问对象模式(Data Access Object Pattern):用于把低级的数据访问API 或操作从高级的业务服务中分离出来。以下是数据访问对象模式的参与者。

前端控制器模式(Front Controller Pattern):是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。

拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理。定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上。过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序

服务定位器模式(Service Locator Pattern)用在我们想使用JNDI 查询定位各种服务的时候。考虑到为某个服务查找JNDI 的代价很高,服务定位器模式充分利用了缓存技术。在首次请求某个服务时,服务定位器在JNDI 中查找服务,并缓存该服务对象。当再次请求相同的服务时,服务定位器会在它的缓存中查找,这样可以在很大程度上提高应用程序的性能

传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据。传输对象也被称为数值对象。传输对象是一个具有getter/setter 方法的简单的POJO 类,它是可序列化的,所以它可以通过网络传输。它没有任何的行为。服务器端的业务类通常从数据库读取数据,然后填充POJO,并把它发送到客户端或按值传递它。对于客户端,传输对象是只读的。客户端可以创建自己的传输对象,并把它传递给服务器,以便一次性更新数据库中的数值


设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式、策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、介者模式、解释器模式 ### 设计模式的三大类 **创建型模式(Creational Pattern):**对类的实例化过程进行了抽象,能够将软件模块**对象的创建**和对象的使用分离。 (5种)工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式 情景记忆:两个人在聊天。一个问:这家**工厂**是干什么的?另一个说:**造 圆型 丹**药的。5个。 **结构型模式(Structural Pattern)**:关注于对象的组成以及对象之间的依赖关系,描述如何将类或者对象结合在一起形成更大的结构,就像**搭积木**,可以通过简单积木的组合形成复杂的、功能更为强大的结构。 (7种)适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式 情景记忆:想象自己正在一个,无论是**外观**还是内部**装饰**都很豪华的度假村,**享**受着7天的带薪年假,那里有小**桥**流水,有**组合**了东西方文化的美食,有会说各国语言的服务员(即**适配器**),还可以**代理**预订各国各航班机票。7个。 **行为型模式(Behavioral Pattern)**:关注于对象的行为问题,是对在不同的对象之间划分责任和算法的抽象化;不仅仅关注类和对象的结构,而且重点关注它们之间的**相互作用**。 (11种)策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、介者模式、解释器模式 情景记忆:一个**访客**来到一家房屋**介**门口,正在**观察**宣传栏里的房屋信息,偶然间听到店长对一位新人说:“你向客人推荐房屋的**策略**用错了,你应该用**迭代**的方式介绍所有房源。客人走后,登记客人信息的**模板**也用错了。你的师傅没有向你**解释**清楚,他也有**责任**。我**命令**你用笔记记下我刚才说的话,起到**备忘**的目的”。店长走后,那位新人的**状态**很低落。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值