《设计模式》笔记:代理模式vs适配器模式vs外观模式

一、定义

代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一起工作的那些类可以一起工作。

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

 

二、理解

代理模式和适配器模式应该说很相像,但是他们的区别也很明显,代理模式和被代理者的接口是同一个(所以代理者和被代理者要继承与同一个父类,这也是代理者模式在类结构上与适配器模式唯一的不同了),只是使用中客户访问不到被代理者,所以利用代理间接的访问,而适配器模式,是因为接口不同,为了让用户使用到统一的接口,把原先的对象通过适配器让用户统一的使用,大多数运用在代码维护的后期,或者借用第三方库的情况下,而外观模式,是大家经常无意中使用的,就是把错综复杂的子系统关系封装起来,然后提供一个简单的接口给客户使用,就类似于一个转接口,可以想象成一个漏斗,中间细的那一段,越细耦合度越低,外观模式就是为了降低耦合度。

代理模式,代理者保存一个被代理的一个对象;适配器模式,保存了一个被适配的对象;而外观模式,就保存了各个子系统对象,然后根据实际逻辑组合。

 

三、类图

代理模式

image

适配器模式

image

外观模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
适配器模式是一种结构设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。在Java中,可以使用以下步骤来实现适配器模式: 1. 定义目标接口(Target Interface):这是客户端所期望的接口。它描述了客户端可以使用的方法。 2. 创建适配器类(Adapter Class):适配器类实现了目标接口,并包含一个对适配者对象的引用。它将客户端的请求转发给适配者。 3. 创建适配者类(Adaptee Class):适配者类是需要被适配的类,它包含了一些客户端不直接支持的方法。 下面是一个简单的示例,展示了如何在Java中实现适配器模式: ```java // 目标接口 interface Target { void request(); } // 适配者类 class Adaptee { public void specificRequest() { System.out.println("Adaptee: specificRequest"); } } // 适配器类 class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } public void request() { adaptee.specificRequest(); } } // 客户端代码 public class Main { public static void main(String[] args) { Adaptee adaptee = new Adaptee(); Target target = new Adapter(adaptee); target.request(); } } ``` 在上面的示例中,Adaptee类是需要被适配的类,它有一个specificRequest方法。Adapter类实现了Target接口,并将请求转发给Adaptee类的specificRequest方法。客户端代码创建了一个Adapter对象,并通过调用Target接口的request方法来发起请求。 这就是一个简单的Java实现适配器模式的例子。适配器模式可以帮助我们将不兼容的接口进行适配,提高代码的复用性和灵活性。希望能对您有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值