23种设计模式

1. 代理模式

代理模式:为其他对象提供一种代理,以控制对这个对象的访问,代理对象在访问对象和目标对象之间起到中介作用,代理分静态代理和动态代理
静态代理在编译期生成,动态代理在运行时动态生成(动态代理分JDK代理和CGLib两种)
三种角色 
抽象角色:通过接口或类声明真实角色和代理对象实现的业务方法
真实角色:实现抽象角色的具体业务,是代理对象所代表的真实对象,是最终要引用的对象
代理角色:提供了与真实角色相同的接口,内部含有对真实角色的引用,访问、控制、扩展

静态代理:给一个类扩展功能,在原有类上套一层,不改变原类的前提下对原有功能进行扩展,静态代理需要代理对象和目标对象实现一样的接口
火车站售票, 代理点售票

动态代理:在代码运行时创建的代理,并不是预先在java代码中定义好, 而是运行时由jvm动态生成,可以代理多个目标
(java SDK 只支持接口,不支持类, 反射性能差; CGLib支持接口、类,主要用作AOP,加载慢,性能好)

2. 适配器模式

将一个类的接口转为也客户端所期望的另一种接口,适配分类适配、对象适配、接口适配
三个角色: 目标接口(target)、适配者(adaptee)、适配器(adapter)
类适配: 实现目标接口,继承适配者--拓展不灵活,类臃肿
对象适配:将适配者对象作为参数放入适配器
接口适配: 在对象适配的基础上,接口中存放多个可实现的函数(适配者也可以是多种类型,继承同一个类或接口)

充电器转接头举例


3. 装饰模式

在不改变原有对象的基础上,将功能附加到对象上,提供比继承更优弹性的替代方案
4种角色
抽象构件:定义一个抽象接口,规范准备接收附加责任的对象
具体构件:实现具体构件,通过装饰角色为其添加一些职责
抽象装饰:继承或实现抽象构件,并包含具体构件的实例,通过子类扩展具体构件的功能
具体装饰:实现抽象装饰方法,并给具体构件对象附加责任

蛋炒饭举例


装饰器模式是一种特殊的代理模式;装饰器模式强调的是自身功能的扩展,可动态定制扩展; 代理模式强调的是代理过程的控制;装饰器模式中装饰者从外界传递进来,可通过构造方法传递,静态代理是在代理类内部创建,以此隐藏目标对象。


参考: Java中23种设计模式_java设计模式_Mr.Yanis的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值