还分不清适配器模式和装饰者模式?用一张表给你说明白
适配器模式 | 装饰者模式 | |
---|---|---|
关键字 | 改接口,重复利用,包装模式 | 不改接口,增强行为,包装模式 |
定义 | 适配器模式将一个类的接口,转换为客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。 | 装饰者模式允许用户用组合的方式而不是继承对已有的类的功能进行扩展,扩展后的类为装饰者,被扩展的类为被装饰者,装饰者与被装饰者具有相同的方法签名,而且有自己另外的方法。 |
模式动机 | 适配器修改被适配类的接口让被适配类更容易让客户端调用 | 装饰者与被装饰者有相同的接口,在不改变被装饰者的代码的同时又能给被装饰者添加新的行为 |
实现方法 | 适配器通过组合或者继承的方式拥有被适配类的方法,调用这些方法提供客户需要的接口 | 装饰者与被装饰者实现相同的接口,装饰者通过组合拥有被装饰者实例 |
具体应用场景 | JAVA中InputStreamReader 和 OutputStreamWriter类使用了适配器模式 | JAVA中的IO字节流的InputStream类族的实现使用了装饰者模式 |