![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
_小鱼塘
理工男,程序员
展开
-
java设计模式--单例模式
基本概念 目的:确保一个类只有一个实例,并提供该实例的全局访问点 关键:使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现 具体的说,私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量; 特点: 单例类只能有一个实例 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 具体代码演示 懒汉式,线程不安全: ...原创 2019-09-09 17:36:51 · 115 阅读 · 1 评论 -
java设计模式--观察者模式
基本概念 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式或者从属者(Dependents)模式; 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象;当这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己; 通俗的理解,微信公众号,订阅号等等; 基本结构图: 基本组成: 抽象主题(Subjec...原创 2019-09-11 16:42:59 · 90 阅读 · 0 评论 -
java设计模式--状态模式
基本概念 状态模式,是对象的行为模式; 状态模式允许一个对象在其内部状态改变的时候改变其行为;这个对象看上去就像是改变了它的类一样; 状态模式的功能就是分离状态的行为,通过维护状态的变化,来调用不同状态对应的不同功能。也就是说,状态和行为是相关联的,它们的关系可以描述为:状态决定行为 基本结构 基本角色 环境类(context:里面维护了一个具体状态的实例(AntFarmConte...原创 2019-09-11 17:30:46 · 99 阅读 · 0 评论 -
java设计模式--策略模式
基本概念 策略模式是对算法的包装,是把调用算法的责任(行为)和算法本身(行为实现)分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。 用一句话来说:准备一组算法,并将每一个算法封装起来,使得它们可以互换; 基本结构 具体组成 环境(Context):持有一个Strategy的引用,即具有复杂多变行为的对象 抽象策略(St...原创 2019-09-11 18:29:30 · 85 阅读 · 0 评论 -
java设计模式--模板方法模式
基本概念 模板方法模式是类的行为模式; 模板方法模式需要开发抽象类和具体子类;前者给出一个算法的轮廓和骨架,后者给出这个算法的各个逻辑步骤;代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method); 模板模式的关键是:子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑 基...原创 2019-09-11 21:00:13 · 113 阅读 · 0 评论 -
java设计模式--访问者模式
基本概念 访问者模式是一种将数据操作和数据结构分离的设计模式; 大多情况下,你不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了; 使用场景: 对象结构较稳定,但经常需要在此对象结构上定义新的操作; 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类 基本结构: 基本成员: Visitor...原创 2019-09-11 22:21:26 · 96 阅读 · 0 评论 -
java设计模式--适配器模式
基本概念 生活中的例子 例如我们平时使用的笔记本电脑,可能笔记本电脑的工作电压是20V,但我们一般的家庭用电是220V,这时候电脑在充电的时候就需要一个电源适配器来把220V的电脑转化为20V的电压了。这个电源适配器也别称为充电器或变压器; 我们想用苹果的充电线给安卓的手机充电时。由于两者的接口不一样,会导致充电口无法匹配。这时,我们就需要适配器,将安卓的充电接口转化为苹果的接口,这样,就可...原创 2019-09-12 10:23:51 · 96 阅读 · 0 评论 -
java设计模式--装饰模式
基本概念 动态给一个对象添加一些额外的职责; 装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为; 基本框架: 需要一个抽象方法类 需要一个抽象装饰器类 创建装饰器 实现步骤/方法 1 创建抽象方法类和未经装饰的具体实现类: 抽象方法类:即共同的超类/父类; public abstract class Component { public abstract...原创 2019-09-12 10:42:45 · 108 阅读 · 0 评论 -
java设计模式--代理模式
基本概念 定义:给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用; 通俗的讲代理模式就是生活中常见的中介; 想象一下我们生活中的购买火车票的情节,可以从官网上购买,可以到售票的窗口购买,这是从官方购买,在编程中,这个过程就是指从提供这个功能的类直接获取这个功能;当然我们也可以从售票厅旁边的小超市,或者其他地方代售火车票的地方购买火车票,那么这些代销处就是代理了火车站的售票功能,那...原创 2019-09-12 14:13:17 · 86 阅读 · 0 评论 -
java设计模式--中介者模式
基本概念 用一个中介对象来封装一系列的对象交互; 使各个对象之间不需要显式地相互引用,从而使耦合性降低,而且可以独立地改变它们之间的交互行为; 具体代码实现 用类似某企鹅的聊天工具来解释会比较好理解: 中介者抽象类: public abstract class Mediator { List<User> list = new ArrayList<&g...原创 2019-09-11 14:29:34 · 94 阅读 · 0 评论 -
java设计模式--迭代器模式
基本概念 提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节; java中使用最多的一种模式,不是单例模式,不是工厂模式,更不是策略模式,而是迭代器模式: public static void print(Collection coll){ Iterator it = coll.iterator(); while(it.hasNext()){ String str ...原创 2019-09-11 14:04:55 · 118 阅读 · 0 评论 -
java设计模式--简单工厂模式
基本概念 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。 在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例; 特点: 在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。 在简单工厂模式中,可以根据参数的不同返回不...原创 2019-09-09 18:11:25 · 164 阅读 · 0 评论 -
java设计模式--工厂方法模式
基本概念 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式; 在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确...原创 2019-09-09 20:44:10 · 113 阅读 · 0 评论 -
java设计模式--抽象工厂模式
基本概念 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类; 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种或几种具体产品,工厂方法也具有唯一性; 为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、...原创 2019-09-10 09:49:29 · 110 阅读 · 0 评论 -
java设计模式--生成器模式
基本概念 生成器模式是一种创建型设计模式,它把对象的创建步骤抽象成生成器,并且可以通过指导类(director)对所有生成步骤的先后顺序进行控制;客户端使用指导类并传入相应的生成器,通过指导类的接口便可以得到相应的对象; 将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以有不同的表示; 具体代码演示 假设场景: 出去旅游都要制定旅游计划,包括旅游天数、定酒店等,如果去专业公司定制...原创 2019-09-10 20:43:07 · 210 阅读 · 0 评论 -
java设计模式--原型模式
基本概念 复制/克隆:Java中的对象复制/克隆分为浅复制和深复制 原型模式的使用场景 在需要一个类的大量对象的时候,使用原型模式是最佳选择,因为原型模式是在内存中对这个对象进行拷贝,要比直接new这个对象性能要好很多,在这种情况下,需要的对象越多,原型模式体现出的优点越明显。 如果一个对象的初始化需要很多其他对象的数据准备或其他资源的繁琐计算,那么可以使用原型模式。 当需要一个对象的大...原创 2019-09-10 21:31:37 · 105 阅读 · 0 评论 -
java设计模式--责任链模式
基本概念 英文原话:Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving object and pass the request along the chain until an...原创 2019-09-10 22:22:35 · 152 阅读 · 0 评论 -
责任链模式的典型应用--Tomcat Filter中的责任链模式
参考博文https://blog.csdn.net/wwwdc1012/article/details/83592323 Tomcat 过滤器中的责任链模式 Servlet过滤器是可用于Servlet编程的 Java 类,可以实现以下目的: 在客户端的请求访问后端资源之前,拦截这些请求; 在服务器的响应发送回客户端之前,处理这些响应。 Servlet定义了过滤器接口Filter...原创 2019-09-10 22:56:49 · 367 阅读 · 0 评论 -
java设计模式--命令模式
基本概念 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象; 命令模式也支持可撤销的操作,命令模式通过这种封装的方式实现将客户端和接收端解耦; 痛点:解决「请求者」与「执行者」之间的耦合 举个栗子 一个面馆子里来个一位客人,客人在菜单上写了「鱼香肉丝盖饭」并交给了服务员,服务员把菜单拿到后堂,交给了大厨!!! 其中,订单就起解耦的作用!!! 基本结构图: ...原创 2019-09-11 11:31:17 · 122 阅读 · 0 评论 -
Java设计模式学习总结
软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案;通常包含以下几个基本要素:模式名称、问题、解决方案、效果; 软件设计遵循的原则 里氏替换原则 单一职责原则 依赖倒置原则 接口隔离原则 迪米特原则 开闭原则 设计模式分...原创 2019-09-09 09:53:57 · 217 阅读 · 0 评论