代理模式、外观模式与适配器模式

本文详细介绍了代理模式、外观模式和适配器模式的含义,并进行了深入的对比分析,同时探讨了在软件设计中遵循迪米特法则的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 三种模式的含义

1.1 代理模式


代理和被代理者继承自同一个类,是为其他对象提供一种代理以控制对这个对象的访问;


1.2 外观模式


为子系统中的一组接口提供一个高层接口,这个接口使子系统更容易使用;
Facade中的每个接口可能使用了不同子系统的一系列接口;
外观模式并不是把子系统的接口隔离起来,只是对外提供了一个更简单明了的接口,用户依然可以直接使用子系统提供的接口;
同时外观模式把用户和子系统进行了解耦,客户可以不用去关心具体是哪个子系统,这样当子系统发生变化时,可以也就感知不到了;

1.3 适配器模式



适配器模式可以在我们需要的接口和提供的接口不一致时使用,一般在Adepter中将Adaptee对象作为其成员变量,然后在其方法中调用Adeptee提供的接口;

2. 三者对比

这三种模式都是在一个类上进行了一层封装,只是各自的目的(意图)不同;

代理模式是为了控制对原始对象的访问进行了一层封装,在Proxy中调用真正对象的接口,并可能进行一些额外的工作(如智能指针);
外观模式是为了减小接口的复杂度,在Facade类中提供的一个方法可能集成了多个子系统的不同方法,这些方法协同完成一个功能,这样客户直接使用Facade类提供的方法就比较简单;外观模式的意图是提供一个简化的接口给用户使用;
适配器模式使两个不配套的东西能够协同工作(例如现实中最常见的电压适配器),通过适配器,调用真正的接口,这样客户就不需要感知和变动;也就是说适配器模式的意图是改变一个类的接口,使其符合客户的需求;

3. 迪米特法则

迪米特法则又叫最少知道原则,也就是尽量少的和其他实体发生关联,不要让太多的类耦合在一起,免得牵一发动全身;
也就是在对象的方法内部,只调用本对象的方法/传递进来的对象/方法中实例化/对象中实例化的对象方法;









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值