![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Design Patterns
文章平均质量分 82
Weison Wei
Java 学习笔记。
展开
-
Java设计模式--组合模式
1 Composite Pattern 组合模式目的:将对象组合成树形结构以表示”部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性; 实现:树枝(容器)和叶子实现统一接口,树枝内部组合该接口。 1.树枝,叶子都实现一个接口,对外只呈现了一个接口; 2.树枝(容器)内部组合该接口,并且含有内部属性 List,里面放叶子; 3.树枝提供内部属性List增删...原创 2018-04-30 07:53:03 · 334 阅读 · 0 评论 -
Java设计模式--策略模式
Strategy Pattern 策略模式原创 2018-05-12 07:40:33 · 628 阅读 · 0 评论 -
Java设计模式--状态模式
1 State Pattern 状态模式目的:使类的行为能够因为它状态的改变而改变; 实现:将行为类私有属性–不同状态(可以理解为条件)抽出来成为一个类,通过改变这个状态类来影响行为类的行为。 1.在代码中包含大量与对象状态有关的条件语句时使用; 2.对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为; 3.允许对象在内部状态发生改变时改变它的行...原创 2018-05-12 09:09:59 · 292 阅读 · 0 评论 -
Java设计模式--建造者模式
1 Builder Pattern 建造者模式目的:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示; 实现:建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。 在以下情况下可以考虑使用建造者模式: 1.需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性; 2.需要生成的产品对象的属性相互依赖,需要指定其生成顺序; 3...原创 2018-04-27 22:14:42 · 301 阅读 · 0 评论 -
Java设计模式--代理模式
1 Proxy Pattern 代理模式目的:为其他对象提供一种代理以控制对这个对象的访问; 实现:增加中间层,实现与被代理类组合。 对对象的访问应该被控制时使用; 对访问对象时应该提供附加功能时使用 与装饰器模式的区别是强调对访问的控制,光绪皇帝再着急,有事还是先找慈禧。2 实现代码场景:清朝末期,慈禧太后垂帘听政,光绪皇帝被架空,朝政实际上由慈禧操控。...原创 2018-04-27 23:04:39 · 271 阅读 · 0 评论 -
Java设计模式--享元模式
1 Flyweight Pattern 享元模式目的:减少创建对象的数量,减少内存占用和提高性能; 实现:用唯一标识码判断,如果在内存中有,则返回这个唯一标识码所标识的对象。 1.运用共享技术有效地支持大量细粒度对象的复用;系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用,如果未找到匹配的对象,则创建新对象; 2.享元模式以共享的方式高效地支持大量...原创 2018-05-07 07:08:03 · 251 阅读 · 0 评论 -
Java设计模式--空对象模式
1 Null Object Pattern 空对象模式目的:当一个对象不存在的时候,用一个空对象取代 null ,以提供默认无任何行为的对象替代品; 实现:对于对象不存在的情况返回一个预定义的空对象,而不是null。 1.我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方; 2.一个对象...原创 2018-05-14 05:56:56 · 610 阅读 · 0 评论 -
Java设计模式--访问者模式
1 Visitor Pattern 访问者模式目的:使用一个访问者类,改变被访问元素类的执行算法; 实现:主要将数据结构与数据操作分离。 1.访问者模式包括两个层次结构,一个是访问者层次结构,提供了抽象访问者和具体访问者,一个是元素层次结构,提供了抽象元素和具体元素。相同的访问者可以以不同的方式访问不同的元素,相同的元素可以接受不同访问者以不同访问方式访问; 2.增加新的访问者...原创 2018-05-14 07:19:38 · 269 阅读 · 0 评论 -
Java设计模式--适配器模式
1 Adapter Pattern 适配器模式目的:作为两个不兼容的接口之间的桥梁,结合两个独立接口的功能; 实现:用接口和继承或者组合的方式实现适配器模式。 1.主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的; 2.客户和被适配者是解耦的,一个不知道另一个; 3.这个模式是如何把客户和接口绑定起来,而不是和实现绑定起...原创 2018-04-29 07:57:19 · 367 阅读 · 0 评论 -
Java设计模式--过滤器模式
Filter Pattern 过滤器模式原创 2018-05-08 06:25:17 · 6034 阅读 · 2 评论 -
Java设计模式--责任链模式
1 Chain of Responsibility Pattern 责任链模式目的:弱化请求方与处理方的关联关系,让双方各自都成为可复用的组件; 实现:拦截的类都实现统一接口,将多个对象组成一条责任链,然后按照他们在职责上的顺序一个一个的找出来谁来负责处理。 1.责任链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递; 2.每个接收...原创 2018-05-08 06:48:01 · 288 阅读 · 0 评论 -
Java设计模式--命令模式
1 Command Pattern 命令模式目的:将请求发送者和接收者解耦,把一个请求封装成一个对象,通过不同的请求对象来执行不同的逻辑; 实现:通过调用者调用接受者执行命令,顺序:调用者→接受者→命令。 1.命令模式的核心在于引入了命令类,通过命令类来降低发送者和接收者的耦合度,请求发送者只需指定一个命令对象,再通过命令对象来调用请求接收者的处理方法; 2.命令模式的本质是对...原创 2018-05-15 05:31:44 · 241 阅读 · 0 评论 -
Java设计模式--外观模式
1 Facade Pattern 外观模式目的:隐藏系统的复杂性,并对外提供了一个可以访问的接口,不必关心实现的细节; 实现:在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好。 1.涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用; 2.客户端不与系统耦合,外观类与系统耦合; 3.为复杂的模块或子系统提供外界访问的模块,子系...原创 2018-05-05 13:35:44 · 298 阅读 · 0 评论 -
Java设计模式--模板模式
1 Template Pattern 模板模式目的:一个抽象类公开定义了执行它的方法的方式/模板,让它的具体实现在子类中进行; 实现:关键逻辑在抽象类实现,其他步骤在子类实现。 1.该模式的场景:1)分工协作,2)公共代码和个性化代码分离 等; 2.在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同...原创 2018-05-05 07:34:48 · 284 阅读 · 0 评论 -
Java设计模式--装饰器模式
1 Decorator Pattern 装饰器模式目的:在不改变一个对象本身功能的基础上给对象增加新的行为,即增强功能; 实现:在抽象修饰类中通过聚合方式将被修饰类引入,增强功能的细节交给子类实现。 1.为了增加功能又不想增加很多子类的情况下使用; 2.动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活; 3.跟代理模式相比,装饰器模式...原创 2018-05-01 07:26:25 · 341 阅读 · 0 评论 -
Java设计模式--迭代器模式
1 Iterator Pattern 迭代器模式目的:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示; 实现:把在元素之间游走的责任交给迭代器,而不是聚合对象。 1.迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据; 2.在同一个聚合上可以有多个遍历,往前、往...原创 2018-05-01 08:41:59 · 260 阅读 · 0 评论 -
Java设计模式--桥接模式
1 Bridge Pattern 桥接模式目的:将类的功能层次与实现层次结构分离; 实现:不关心生成产品的具体实现,只关心接口,仅使用接口生成产品。 1.如果某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则; 2.与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联...原创 2018-05-02 07:14:11 · 364 阅读 · 0 评论 -
Java设计模式--备忘录模式
1 Memento Pattern 备忘录模式目的:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态; 实现:客户不与备忘录类耦合,与备忘录管理类耦合,通过一个备忘录类专门存储对象状态。 1.并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态; 2.很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者...原创 2018-05-09 07:01:14 · 3022 阅读 · 0 评论 -
Java设计模式--单例模式
1 Singleton 单例模式目的:确保对象的唯一性; 实现:这种模式涉及一个类,它负责创建一个对象,同时确保只创建一个对象。这个类提供了一种方法来访问它的唯一对象,可以直接访问,而不需要实例化类的对象。2 主要实现2.1 饿汉模式饿汉模式没有加锁,执行效率会提高,它基于 classloder 机制避免了多线程的同步问题,在单例模式中大多数都是调用静态方法来获取实例。...原创 2018-04-25 05:55:05 · 429 阅读 · 0 评论 -
Java 设计模式
设计模式Java实现汇总原创 2018-04-21 05:54:45 · 1285 阅读 · 0 评论 -
Java设计模式--工厂模式
1 Factory Pattern 工厂模式目的:将实例的生成交给子类; 实现:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 1.首先将需要创建的各种不同对象的相关代码封装到不同的类中,这些类称为具体产品类,而将它们公共的代码进行抽象和提取后封装在一个抽象产品类中, 每一个具体产品类都是抽象产品类的子类; 2.然后提供一个工厂...原创 2018-04-25 07:14:35 · 381 阅读 · 0 评论 -
Java设计模式--中介者模式
1 Mediator Pattern 中介者模式目的:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互; 实现:定义一个对象,该对象封装了一组对象交互的方式。 1.在多个类相互耦合,形成了网状结构时使用,将网状结构分离为星型结构; 2.中介者类用于协调其他对象/类之间相互调用;2 实现代码场景...原创 2018-05-03 07:25:38 · 483 阅读 · 0 评论 -
Java设计模式--原型模式
1 Prototype Pattern 原型模式目的:在运行期通过“复制和粘贴”来创建新对象 ; 实现:创建一个原型对象,再通过Java 语言中常用的克隆实现方法复制这个原型对象来创建更多同类型的对象。2 实现代码场景:十月革命成功后,强大的苏联让周围仍处于战乱的国家找到了奋斗的方向,众多政党纷纷参照苏联模式进行革命、制定国家发展方针政策。2.1 代码实现共产主义思...原创 2018-04-27 06:18:37 · 363 阅读 · 0 评论 -
Java设计模式--观察者模式
1 Observer Pattern 观察者模式目的:用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应; 实现:不关心生成产品的具体实现,只关心接口,仅使用接口生成产品。 1.描述了如何建立对象与对象之间的依赖关系,以及如何构造满足这种需求的系统,包括观察目标和观察者两个继承层次结构; 2.发生改变的对象称为观察目标,而被通知的...原创 2018-05-05 07:07:26 · 270 阅读 · 0 评论 -
Java设计模式--解释器模式
1 Interpreter Pattern 解释器模式目的:对于一个使用规定格式和语法的代码,可以建立一个解释器来解释该语言中的句子; 实现:构件语法树,定义终结符与非终结符。 1.对于一些固定文法构建一个解释句子的解释器,也就是翻译成你能懂的东西; 2.高效的解释器通常不是通过直接解释抽象语法树来实现的,而是需要将它们转换成其他形式,使用解释器模式的执行效率并不高; 3...原创 2018-05-16 06:14:29 · 231 阅读 · 0 评论