设计模式
用java 实现23种经典设计模式
Java 程序源
微信公众号: Java 程序源,敬请关注!
展开
-
01. 23种经典设计模式-11-单例模式
1. 单例模式单例模式(Singleton Pattern), 是23种设计模式中最简单的设计模式, 用途也相当广泛.1.1 单例模式核心思想一个类只能拥有一个实例1.2 单例模式类图构造方法必须私有, 保证外界不能自行创建实例单例对象为静态常量, 保证一个类只有一个实例1.3 单例模式优点与缺点优点: 节省内存, 保证全局唯一缺点:扩展困难, 违背单一职责原则. 因...原创 2019-08-27 17:08:11 · 235 阅读 · 0 评论 -
15. 23种经典设计模式-31-责任链模式
1. 责任链模式Avoid coupling the sender of a request to its receiver by giviing more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until ...原创 2019-08-27 17:10:01 · 244 阅读 · 0 评论 -
16. 23种经典设计模式-310-中介者模式
1. 中介者模式(Mediator Pattern)Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets y...原创 2019-08-27 17:09:57 · 227 阅读 · 0 评论 -
17. 23种经典设计模式-311-迭代器模式
1. 迭代器模式(Iterator Pattern)Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.(提供一种方法访问一个容器对象的各个元素,而又不需要暴露该对象的内部细节)迭代模式是一种濒临废弃的方...原创 2019-08-27 17:10:45 · 155 阅读 · 0 评论 -
18. 23种经典设计模式-32-模板方法模式
1. 模板方法模式(Tmeplate Method Pattern)Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm with...原创 2019-08-27 17:10:41 · 285 阅读 · 0 评论 -
19. 23种经典设计模式-33-策略模式
1. 策略模式(Strategy Pattern)Define a family of algorithms, encapsulate eache one, and make them interchangeable. (定义一组算法, 将每个算法都封装起来,并使它们之间可以相互替换)策略模式是一种非常简单的模式,核心就是面向接口编程. 只是粒度更小,将每种算法都单独成一个策略类. 策略模...原创 2019-08-27 17:10:37 · 283 阅读 · 0 评论 -
20. 23种经典设计模式-34-观察者模式
1. 观察者模式(Observer Pattern)Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. (定义对象间一种一对多的依赖关系, 使得当一个对象状...原创 2019-08-27 17:10:34 · 343 阅读 · 0 评论 -
21. 23种经典设计模式-34-观察者模式扩展
1. 观察者模式扩展笔者上篇博客中提到, 对于四人帮定义的标准观察者模式而言, 有两个问题:观察者中需要持有具体观察者的引用,这样导致观察者与被观察者直接有强耦合关系观察者更新方法需要调用被观察者的方法获取实时状态, 虽然这种是为了保证消息通知时最小量化消息的设计,但是在多线程时,我们可能那不到实际触发变更时的状态。因此我们可以此进行改进,观察者的更新方法接收一个参数,接收变化的内容....原创 2019-08-27 17:10:30 · 261 阅读 · 0 评论 -
22. 23种经典设计模式-35-命令模式
1. 命令模式(Command Pattern)Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable opertations. (将请求封装成一个对象, 从而...原创 2019-08-27 17:10:26 · 213 阅读 · 0 评论 -
23. 23种经典设计模式-37-备忘录模式
1. 备忘录模式(Memento Pattern)Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later. (在不破坏封装性的前提下, 捕获一个对象的内部状态, 并在该对象之...原创 2019-08-27 17:10:23 · 221 阅读 · 0 评论 -
24. 23种经典设计模式-38-状态模式
1. 状态模式Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.(当一个对象内在状态改变时,允许其改变对象的某些行为, 让这个对象看起来像是改变了类)1.1 状态模式-核心思想1.2 状态模式-类图状态模式主要...原创 2019-08-27 17:10:19 · 223 阅读 · 0 评论 -
14. 23种经典设计模式-27-装饰者模式
1. 装饰模式(Decorator Pattern)Attach additional responsibilities to an object dynamically keeping the sam interface. Decorators provide a flexible alternative to subclassing for extending functionality....原创 2019-08-27 17:10:05 · 295 阅读 · 0 评论 -
13. 23种经典设计模式-26-外观模式
1. 外观模式(Facade Pattern)Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.(为子系统提供一个统一的外部访问接口。 外观模式提供了一个...原创 2019-08-27 17:10:09 · 256 阅读 · 0 评论 -
12. 23种经典设计模式-25-桥接模式
1. 桥接模式(Bridge Pattern)Decouple an abstraction from its implemention so that the two can vary independently. (将抽象和实现解耦, 使两者可以独立变化)桥接模式,也有的称之为桥梁模式.1.1 核心思想将类的抽象层和实现层分离,可以使得抽象和实现层独立地进行变化可以说是多层继承...原创 2019-08-27 17:09:30 · 230 阅读 · 0 评论 -
02. 23种经典设计模式-12-原型模式
1. 原型模式原型模式(Prototype Pattern), 用于高性能地创建重复对象, 属于一种创建类模式.原型模式的核心: 高性能复制对象, 通过new对象,set/get属性复制方式性能开学较大1.1 原型模式类图Prototype: 原型接口, 提供克隆方法.ConcretePrototype: 支持克隆的具体类,需要实现clone方法1.2 原型模式优点性能优...原创 2019-08-27 17:08:28 · 311 阅读 · 0 评论 -
03. 23种经典设计模式-13-工厂方法模式
1. 工厂方法模式(Factory Method Pattern)Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.(定义一个...原创 2019-08-27 17:08:31 · 233 阅读 · 0 评论 -
04. 23种经典设计模式-14-抽象工厂模式
1. 抽象工厂模式(Abstract Factory Pattern)Provie an interface for creating families of related or dependent objects without specifying theiur concrete classes. (为创建一组相关或相互依赖的对象提供一个接口, 而无须指定它们的实现类)1.1 抽象工...原创 2019-08-27 17:08:37 · 212 阅读 · 0 评论 -
05. 23种经典设计模式-15-建造者模式
1. 建造者模式建造者模式(Builder Pattern) 也成生成器模式, 属于一种创建类模式. 目的是将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.1.1 建造者通用模式中的角色建造者模式中, 定义了4种角色:Product(产品类): 定义产品的基本属性和基本方法Builder(抽象建造者): 指定产品各部分的抽象生成方法ConcreteBuil...原创 2019-08-27 17:08:40 · 315 阅读 · 0 评论 -
06. 23种经典设计模式-15-建造者模式扩展
1. 建造者扩展模式java语言中,抽象建造者除了可以是接口之外, 还可以是抽象类。通用建造者模式中需要在每个具体建造者中提供获取组合好的产品方法,此方法在多个建造者直接会产生冗余。因此可以将获取完成组装的产品方法提取到抽象建造者AbsBuilder中定义。1.1 建造者扩展模式-角色Product(产品): 定义产品的属性及基础方法AbsBuilder(抽象建造者):规范产品各部分...原创 2019-08-27 17:09:08 · 266 阅读 · 0 评论 -
07. 23种经典设计模式-21-组合模式
1. 组合模式Compose objects into tree structures to represent part-whole hierarchies. Composite lets chilents treat individual objects and compositions of objects uniformly. 将对象组合成树形结构以表示"整体-部分“的层次结构,使得用...原创 2019-08-27 17:09:13 · 215 阅读 · 0 评论 -
08. 23种经典设计模式-22-享元模式
1. 享元模式Use sharing to support large numbers of fine-grained objects efficiently. (使用共享对象可有效地支持大量的细粒度的对象)1.1 享元模式核心思想利用jvm缓存,解决应用中大量重复对象的内存浪费问题享元标准模式并不是太好设计,享元思想很好实现1.2 享元模式类图Flyweight: 抽象享元...原创 2019-08-27 17:09:16 · 168 阅读 · 0 评论 -
09. 23种经典设计模式-23-代理模式
1. 代理模式Provide a surrogate or placehoilder for another object to control access to it.(为其它对象提供一种代理,以控制该对象的访问)代理模式(Proxy Pattern ),也称为委托模式, 是一种使用非常广泛的设计模式, 指的是为一个对象提供一个代理对象, 通过访问代理对象以访问目标对象.1.1 代理...原创 2019-08-27 17:09:20 · 220 阅读 · 0 评论 -
10. 23种经典设计模式-23-代理模式扩展-cglib
1. cglib 代理Cglib 代理也叫子类代理, 它是在内存中创建一个子类对象,从而实现对目标对象的功能扩展.Cglib 的底层是通过字节码处理框架ASM来转换字节码并生成新的子类1.1 注意事项代理的类不能使用final 修饰不能代理目标对象中被final 或 static 的方法, 因为cglib是通过拦截器机制实现的.1.2 cglib 应用cglib 被广泛用于...原创 2019-08-27 17:09:24 · 181 阅读 · 0 评论 -
11. 23种经典设计模式-24-适配器模式
1. 适配器模式Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces. (将一个类的接口变成客户端所期待的另一种接口,...原创 2019-08-27 17:09:27 · 202 阅读 · 0 评论 -
25. 23种经典设计模式-39-解释器模式
1. 解释器模式(Interrepeter Pattern)Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language. (给定一门语言, 定义它的文法...原创 2019-08-27 17:10:15 · 262 阅读 · 0 评论