![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
FLUNGGG
1111
展开
-
设计模式:7大原则加例子
文章目录1. 前言2. UML类图2.1 泛化(Generalization)2.2 实现(Realization)2.3 依赖(Dependency)2.4 关联(Association)2.5 组合(Composite)2.6 聚合(Aggregation)3. 其他原则3.1 单一责任原则3.2 接口隔离原则3.3 依赖倒置(倒转)原则3.4 里氏替换原则3.5 开闭原则3.6 迪米特原则3.7 合成复用原则4. 总结5. 设计模式因为疫情回不了校,5月份打算学设计模式,《HeadFirst设计模原创 2020-08-05 00:06:37 · 696 阅读 · 3 评论 -
设计模式:装饰者模式
文章目录1. 装饰者模式2. 实现3. Java中的装饰者模式4. 总结1. 装饰者模式装饰器模式(Decorator Pattern)允许向一个现有的对象动态地添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。什么意思呢?比如去吃火锅,我们会先选择一种汤底(假设是鸳鸯锅),然后选择食材(假设是牛肉,生菜)来搭配该汤底。本质上就是一个鸳鸯锅,而牛肉、生菜等食材是用来“装饰”该鸳鸯锅的,或者说这些食材用来扩展鸳鸯锅的功能(除非你是来喝汤的)。装饰器模式由为原创 2020-08-04 18:04:47 · 296 阅读 · 0 评论 -
设计模式:适配模式与外观模式
文章目录1. 适配器模式2. 适配器模式的实现2.1 “对象”适配器2.2 “类”适配器3. 适配器模式总结4. 外观模式5. 外观模式的实现6. 外观模式的总结1. 适配器模式该模式容易理解,在现实中有种东西叫转换头,比如插座转换头(把三头插变成二头插的接口等),type转换头等。总之就是把一个接口转换成另一个接口,而适配器模式的作用也是一样,比如已有一个软件系统,现在希望跟一个新的厂商类库搭配使用,但是该新厂商设计的接口跟旧厂商设计的接口不同,如下:有一种方法就是去修改旧厂商的代码使得接口跟新厂原创 2020-08-04 18:01:46 · 268 阅读 · 0 评论 -
设计模式:命令模式
1. 命令模式命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化。比如在餐厅,我们只需要在订单上勾选想吃的,而服务员只需要把这份订单交给厨师,服务员就是中介,他并不需要如何做菜;或者一个遥控器,遥控器不需要知道如何实现灯光的开关命令,只需要知道按“开”的按钮就开灯等。命令模式的组成:接收者、请求者、命令(如果想要扩展,那就定义成接口)。比如上面的餐厅:接收者是厨师、请求者是服务员、命令是订单、顾客是客户端。命令模式的类图:2. 实现假设制作一个简易遥控器,要求对灯光进行开原创 2020-08-04 17:58:17 · 129 阅读 · 0 评论 -
模式模式:模板方法
1. 模板方法模板方法:在一个方法中定义一个算法的骨架(步骤),而将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法的类图:2. 实现假设有一家店卖咖啡和茶,对于咖啡的冲泡法有4个步骤:把水煮沸;咖啡滴过过滤器;倒进杯子;加糖。而茶的冲泡法也有4个步骤:把水煮沸;用沸水冲泡茶包;倒进杯子;加柠檬。现在来设计这两个类,从上面的步骤来分析两个类,第一个步骤和第三个步骤是一样的,而第二和第四个步骤是完全不同,如果设计一原创 2020-08-04 17:56:50 · 305 阅读 · 0 评论 -
设计模式:观察者模式
1. 观察者模式观察者模式(Observer)是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。比如关注某博主,当博主发布新文章时,就会通知你;在邮箱中也可以订阅某些文章,文章更新时会发邮件给你等。观察者模式又可称为发布-订阅模式(Publish/Subscribe)。观察者的结构由两部分组成,分别为Subject和Observer,UML图如下:2. 实现想来想去还是拿《HeadFirst设计模式》中观察者章节的气象监测原创 2020-08-04 17:51:21 · 218 阅读 · 0 评论 -
设计模式:工厂模式
任何可以生产对象的方法或类,都可以称为工厂。单例模式也是一种工厂。1. 工厂模式(静态工厂模式/简单工厂模式)先来看看下面的例子:汉堡店卖汉堡假设目前有三种种类的汉堡:鸡腿汉堡、牛肉汉堡、鲜虾汉堡。可以使用一个通用接口:public abstract class Burger { String name; void machining() { System.out.println("制作" + this.name + "中"); } void b原创 2020-08-04 17:49:56 · 205 阅读 · 0 评论 -
设计模式:策略模式
文章目录1. 引入2. 策略模式3. 实现4. 总结类图是以前画的,不是正规画法,目前在备战秋招没时间以后在该1. 引入先来看看一个例子:飞机大战public class Aircraft { /** * 切换攻击方式 */ public String attackMode(int change) { if(change == 1) { return "双弹攻击"; } else if(change ==原创 2020-08-04 17:48:19 · 213 阅读 · 0 评论 -
设计模式:代理模式
文章目录1. 代理模式2. 静态代理3. 动态代理3. Cglib代理3.1 实现4. 代理模式的变体4.1 防火墙代理4.2 缓存代理4.3 远程代理4.4 同步代理1. 代理模式代理模式:为一个对象提供一个替身,以控制对这个对象(被代理)的访问。即通过代理对象访问目标对象。这样的好处是:可以在目标对象实现的基础上,增强额外的功能操作(符合开闭原则)。被代理的对象可以是远程对象、创建开销大的对象、需要安全控制的对象。代理有三种形式:静态代理、动态代理(可称JDK代理或接口代理)、Cglib代理(可原创 2020-08-04 12:04:30 · 178 阅读 · 0 评论 -
设计模式:单例模式
文章目录1. 饿汉式2. 懒汉式3. 静态内部类方式4. 枚举形式5. 总结单例模式(Singleton Pattern),就是只有一个实例。如果一个全局使用的类频繁地创建和销毁,就可以考虑使用单例模式。实例只能由类本身来创建,不能被其他方式创建。单例模式的实现方式有很多种。1. 饿汉式我们常用的只创建一个对象的方法就是使用java的静态变量,类加载到内存后,就实例化一个单例,由JVM来保证线程安全。public class Main1 { private final stati原创 2020-08-04 11:02:40 · 142 阅读 · 0 评论