![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 87
Red_Dragon_
加油(ง •̀_•́)ง
展开
-
设计模式—总纲
总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式的六大原则:...转载 2017-07-26 17:43:24 · 192 阅读 · 0 评论 -
设计模式—结构型—装饰者模式
前言 这个模式写起来很简单(但是融会贯通并不简单),核心的类就3个。所谓装饰者模式就是基于如下三个类来展开的。 概念 基础抽象类(Coffee) 这个类定义了被装饰的对象具备哪些属性,在本文案例中即:价格price,名称name。 标准模板类(SimpleCoffe) 这是装饰者模式的一个体现,它是基础抽象类的一个实现,因为基础抽象类是抽象的,我们无法具体的去设置它的属性,所以我们需要...原创 2018-08-03 11:32:51 · 243 阅读 · 0 评论 -
设计模式—行为型—观察者模式
理解 ”观察者模式”非常简单,就拿”发通知”这件事说,因为这个动机足够强和具体。 俩个角色: - 被观察者—发送通知的人。 - 观察者—被通知的人,接收通知的人。 很多人喜欢把简单的问题搞的很复杂,定义成四个角色,实际上就上述俩角色,多余的俩角色只不过是该俩角色的抽象。 实现 废话不多说,直接干代码。 被观察者—发通知 定义被观察者的抽象接口 package ...原创 2018-07-27 14:50:03 · 184 阅读 · 0 评论 -
设计模式—行为型—责任链模式
理解 一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。注意:”请求”,”链”,”处理者”。 术语 图片摘自:hehonghui的github 分析这个类图: - Handler—抽象处理者 1.拥有一个void handlerRequest()方法。 2.并且自身包含自己的一个对象(自聚合)。 ConcreteHandler—具体处理者 1.拥有一个h...原创 2018-07-24 16:36:57 · 272 阅读 · 0 评论 -
设计模式—创建型—构建者模式
理解 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 比如装电脑,我们只需要提供各个部件(cpu,主板,显卡)的配置。其他事我们不用管,交给电脑商家。 术语 Director: 指挥者类,用于统一组装流程,对外暴露一个方法让客户传递电脑的型号参数即可,构造者模式隐藏构造流程细节的体现。 Builder:抽象Builder类,规范产品的组建,注意这里的组建...原创 2018-07-24 13:03:07 · 178 阅读 · 0 评论 -
设计模式—结构型—生产者消费者模式
介绍 1.生产者生产数据到缓冲区中,消费者从缓冲区中取数据。 2.如果缓冲区已经满了,则生产者线程阻塞。 3.如果缓冲区为空,那么消费者线程阻塞。 2种实现方式 实际上还有一种await、signalAll的实现方式,这里我排除了,因这里需要涉及到Lock的东西,精力有限,暂时TODO。 这里只实现sychronized和bloackQueue的例子。 wait / no...原创 2018-05-23 14:11:08 · 544 阅读 · 0 评论 -
设计模式—结构型—适配器(Adapter)模式
概述 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 生活中的例子 例1: 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而这...原创 2018-03-02 17:44:18 · 186 阅读 · 0 评论 -
设计模式—创建型—单例模式
转载请注明出处:http://cantellow.iteye.com/blog/838473 第一种(懒汉,线程不安全): Java代码 收藏代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton ge...转载 2018-03-01 13:45:09 · 154 阅读 · 0 评论 -
设计模式—结构型—代理模式(静态代理,动态代理)
理论依据: 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留原创 2018-02-06 17:33:38 · 279 阅读 · 0 评论 -
设计模式—工厂模式总结
编码风格对比: 1.普通工厂方法模式 GunFactory gunFactory = new GunFactory(); IGun ak47 = gunFactory.getGun("AK47"); IGun m4a1 = gunFactory.getGun("M4A1"); IGun mp5 = gunFa原创 2018-02-05 15:12:54 · 214 阅读 · 0 评论 -
设计模式—创建型—抽象工厂模式
概述工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题。那么要想尽可能少的去修改”原有的工厂类”,而达到”扩展”产品的目的,那么我们就需要更进一步的封装。说白了,就是再抽一层。那么如何来再抽一层呢?下面进行分析。思考引用第一篇简单工厂方法模式的案例:枪分为冲锋枪(MP5/UZI/MK5),步枪(M4a原创 2018-01-11 16:47:52 · 158 阅读 · 0 评论 -
设计模式—创建型—工厂方法模式—静态工厂方法模式
概述 静态工厂方法模式就是将之前的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。 步骤 1.修改GunFactory.java 2.修改StaticFactoryTest.java 代码实践 修改GunFactory.java public class GunFactory { public static IGun getGunAK47(原创 2018-01-11 15:47:55 · 216 阅读 · 0 评论 -
设计模式—创建型—工厂方法模式—多个工厂方法模式
概述 多个工厂方法模式,属于工厂方法模式中的一种。它是一种创建型模式。是对普通简单工厂模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象. 思考 1.修改GunFactory.java 2.修改MultiFactoryTest.java 代码实践 修改GunFactory.java pub原创 2018-01-11 15:23:22 · 357 阅读 · 0 评论 -
设计模式—创建型—工厂方法模式—(普通|简单)工厂模式
概述 简单工厂模式,属于工厂方法模式中的一种。它是一种创建型模式。 思考 场景 就拿CS这个游戏来说,枪分为冲锋枪(MP5/UZI/MK5),步枪(M4a1/AK47/),手枪(p9/沙漠之鹰),狙击枪(AWP/AWM) 为了获得这些枪械,我们就需要一个工厂来创建这些枪械。 这里涉及的2个角色,枪厂(工厂),枪械(产品) 步骤 1.抽象产品 IGun.java 2.实原创 2018-01-11 14:56:34 · 211 阅读 · 0 评论 -
设计模式—行为型—策略模式
文章目录0.概述1.图解2.应用场景3.代码练习4.总结5.Demo6.Thanks 0.概述 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式把一个系列的算法封装到一个系列的具体策略类里面,作为一个抽象策略类的子类或策略接口的实现类。简单地说:准备一组算法,并将...原创 2018-10-20 15:25:03 · 293 阅读 · 0 评论