![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 76
wyaoyao93
小白
展开
-
行为模式之责任链模式
[@toc]1 责任链模式介绍为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式的核⼼是解决⼀组服务中的先后执⾏处理关系,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。这样的例子还有很多,如找领导出差报销、生活原创 2021-10-13 14:24:14 · 223 阅读 · 0 评论 -
13 行为型模式之策略模式(Strategy)
文章目录1 引入2 策略模式介绍2.1 定义2.3 角色2.4 优缺点3 demo1 引入一个简单的例子,计算两个值的和或者差package study.wyy.design.strategy.demo;/** * @author wyaoyao * @description * @date 2021/1/7 16:09 */public class Calculator { public int calculator(int a, int b, String operate)原创 2021-01-08 09:07:29 · 66 阅读 · 0 评论 -
12 结构型模式之享元模式(Flyweight)
文章目录1 介绍1.1 定义和特点1.2 享元模式的结构2 案例3 Integer类1 介绍在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。1.1 定义和特点享元(Flyweight)模式的定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。享元(Flyweight)的核心思想很简单:如果一个对象实例原创 2021-01-07 14:21:40 · 67 阅读 · 0 评论 -
11 结构型模式之外观模式(Facade)
文章目录1 介绍1.1 引入1.1 外观模式的定义与特点2 案例2.1 代码实现1 介绍1.1 引入如果客户端要跟许多子系统打交道,那么客户端需要了解各个子系统的接口,比较麻烦。如果有一个统一的“中介”,让客户端只跟中介打交道,中介再去跟各个子系统打交道,对客户端来说就比较简单。1.1 外观模式的定义与特点外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这原创 2021-01-06 17:19:32 · 125 阅读 · 0 评论 -
10 结构型模式之桥接模式(bridge)
文章目录1 概述1.1 引入1.2 定义1 概述1.1 引入现在有一个需求,需要创建不同的图形,并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来设计类的关系:我们可以发现有很多的类,假如我们再增加一个形状或再增加一种颜色,就需要创建更多的类。试想,在一个有多种可能会变化的维度的系统中,用继承方式会造成类爆炸,扩展起来不灵活。每次在一个维度上新增一个具体实现都要增加多个子类。为了更加灵活的设计系统,我们此时可以考虑使用桥接模式。1.2 定义定义: 将抽象与实现分离,使它们可以独立原创 2021-01-04 09:55:07 · 110 阅读 · 0 评论 -
09 结构型模式之装饰者模式(decorator)
文章目录1 概述1.1 引入1.2 结构2 实现3 总结3.1 使用场景3.2 静态代理和装饰者的区别1 概述1.1 引入我们先来看一个快餐店的例子。快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。如果像上面的类图一样,通过继承的方式实现,最大的弊端就是,会引起类爆炸,比如我们新增炒河粉,就要定义一个炒河粉类继承FastFood,在定义一个鸡蛋炒河粉,培根炒粉;同样如果新增一种配料芝士,就需要在炒原创 2020-12-13 10:45:53 · 128 阅读 · 0 评论 -
08 结构型模式之适配器模式模式(adaptor)
文章目录1 概述2 类适配器模式3 对象适配器模式1 概述定义将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类适配器模式和对象适配器模式,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。角色适配器模式(Adapter)包含以下主要角色:目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件原创 2020-12-12 20:52:38 · 433 阅读 · 0 评论 -
07 结构型模式之代理模式(Proxy)
文章目录1 结构型模式2 代理模式介绍2.1 概述2.1 角色3 静态代理4 动态代理4.1 JDK动态代理4.1.1 API介绍4.1.2 演示4.1.3 jdk实现代理分析4.2 CGLIB动态代理5 三种代理的对比5.1 优缺点5.2 使用场景1 结构型模式结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构原创 2020-12-11 20:16:43 · 153 阅读 · 0 评论 -
06 创建型模式之建造者模式(Builder Pattern)
文章目录1 介绍1.1 概述1.2 结构2 案例实现3 优缺点和使用场景4 模式扩展5 创建者模式对比5.1 工厂方法模式VS建造者模式5.2 抽象工厂模式VS建造者模式1 介绍1.1 概述将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,原创 2020-12-10 22:00:41 · 364 阅读 · 0 评论 -
05 创建型模式之原型模式(Prototype Pattern)
文章目录1 介绍2 浅克隆(Bitwise Copy)和深克隆(Memberwise Copy)2.1 浅克隆(Bitwise Copy)2.2 深克隆(Bitwise Copy)1 介绍用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类中的 clone() 方法来复制新的对象。原创 2020-12-10 20:30:45 · 82 阅读 · 0 评论 -
04 创建型模式之工厂模式(factory Pattern)
文章目录1 案例引入2 简单工厂模式2.1 简单工厂模式角色2.2 改进入门案例3 工厂方法模式3.1 角色3.2 实现3.3 优缺点4 抽象工厂4.1 概念和角色4.2 实现3.3. 优缺点和使用场景1 案例引入需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。定义一个咖啡类Coffee,及其子类AmericanCof原创 2020-12-10 16:02:24 · 253 阅读 · 0 评论 -
03 创建型模式之单例模式(Singleton Pattern)
文章目录1 介绍1.1 单例模式结构1.2 单例模式的实现1.3 单例模式实现基本要求2 饿汉式2.1 静态变量方式2.2 静态代码块方式3 懒汉式3.1 方式1--线程不安全3.2 方式2--线程安全3.2 方式3--双重检查锁3.4 方式4(静态内部类方式)4 枚举方式实现5 破坏单例模式5.1 序列化方式破坏单例5.1.1 演示5.1.2 解决5.2 反射方式破坏单例5.2.2 解决1 介绍单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创原创 2020-12-09 17:04:40 · 155 阅读 · 1 评论 -
02 软件设计原则
文章目录1 开闭原则(Open-Closed Principle)2 里氏代换原则(Liskov Substitution Principle LSP)3.依赖倒转原则(Dependence Inversion Principle)3.1 依赖倒转原则介绍3.2 案例演示3.2.1 不符合依赖倒转原则3.2.2 符合依赖倒转原则4 接口隔离原则(Interface Segregation Principle)4.1 接口隔离原则介绍4.2 案例演示4.2.1 不符合接口隔离原则4.2.2 符合接口隔离原原创 2020-12-09 10:24:19 · 113 阅读 · 0 评论 -
01 设计模式介绍
文章目录1 设计模式分类2 UML2.1 类图2.2 类图的表示方法2.2.1 类的表示方法2.2.2 类之间关系的表示方式关联关系聚合关系聚合关系依赖关系继承关系实现关系1 设计模式分类创建型模式用于描述如何创建对象,主要特点就是将对象的创建和使用分离,单例,工厂方法,抽象工厂,建造者等5个模式结构型模式用于描述如何将类或者对象按照某种布局组成更大的结构,代理,桥接,装饰,外观,享元,组合等模式行为型模式用于描述类或者对象之间怎样协作共同完成单个对象无法完成的任务,以及怎样分配职责。模板方原创 2020-12-08 10:16:19 · 87 阅读 · 0 评论 -
03 设计模式七大原则--依赖倒转原则
文章目录1 概念2 引入3 改进1 概念高层模块不应该依赖底层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转的中心思想就是面向接口编程依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多,以抽象为基础搭建的架构要比以细节为基础的架构要稳定的多。使用接口和抽象类的目的就是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成2 引入public class Inversion { public static void原创 2020-10-13 22:27:38 · 78 阅读 · 0 评论 -
02 设计模式七大原则--接口隔离原则
文章目录1 概念2 引入3 改进1 概念客户端不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上2 引入package study.wyy.design.principle.segregation;/** * @author by wyaoyao * @Description * @Date 2020/10/13 8:30 下午 */public class Segregation1 { public static void main(String[] ar原创 2020-10-13 21:23:53 · 106 阅读 · 0 评论 -
01设计模式七大原则--单一职责原则
文章目录1 设计模式七大原则2 单一职责原则2.1 解释2.2 应用案例版本1改进改进2.3 总结1 设计模式七大原则单一职责原则接口隔离原则依赖倒置原则里氏替代原则开闭原则迪米特法则合成复用原则2 单一职责原则2.1 解释对类来说,就是一个类应该只负责一项职责2.2 应用案例版本1@Slf4j@Slf4jpublic class SingleResponsibility1 { public static void main(String[] args) {原创 2020-10-12 22:07:59 · 74 阅读 · 0 评论