场景
我在写一个程序,要计算一个广场的面积。我突然想起了Jill,他做了一个形状类,里面有长方形和它的面积计算方法。
为了减少重复代码和提高自己的工作效率,我准备直接调用它的长方形类。
但是我在计算的过程中需要添加单位,所以我将它的类拿来后,做了本地化的包装,并做成了一个新的类。
而这种利用别人的代码,来建立新的代码的方式达到自己的目的,就是Adapter模式。
总结
意图:使控制范围之外的一个原有对象和某个接口匹配。
问题:系统的数据和行为都正确,但是接口不符。通常用于必须从抽象类派生时。
解决方案:Adapter模式提供了具有所需接口的包装类。
效果:Adapter模式使原有对象能够适应新的类结构,不受其接口的限制。
实现:将原有类包含在另一个类之中。让包含类与需要的接口匹配,调用被包含类的方法。或者通过继承来获得原有类。
对比:Facade模式简化了接口,而Adapter模式则是将一个已有的接口转变成另一个接口。
网友评论