设计模式--适配器、代理、装饰、外观模式的区别与联系

来源:互联网 发布:王者传奇手游转生数据 编辑:程序博客网 时间:2024/06/14 14:34
设计模式是为了提高代码的可扩展性可读性,在日常的需求中,逐步总结归纳出来的。是每个程序员都可以在工作中遇到的,用心去发现去理解才能真正的用到工作中,不要为了用而用。

设计模式从功能上一般分为创建型、结构型、行为型 三种类型。
本节要说的就是结构型中的四个模式的区别,先从定义(功能)上进行区别:
定义:
适配器:把一个接口转换成客户期望的类型;
代理:为一个对象提供一个替身或者占位符,以控制这个对象的访问;
装饰:动态的给一个对象附加责任或者行为
外观模式:提供一个统一的接口,用来访问子系统的一群接口。

功能上:
适配器:让两个不同类型的接口合作
代理:控制被代理对象的访问或延迟创建消耗大的对象的创建时机
装饰:动态附加责任,通过委托|组合使模式,避免类中出现很多静态的不需要的代码功能
外观:简化接口,更方便的访问子系统

实现上:
适配器:创建class A 并实现客户期望的接口,A中拥有被适配者的接口类型引用(Has-a 关系),把接口功能委托给被适配者;适配者和被适配者属于不同的类型;
代理:代理类和被代理类实现同一个接口,代理对象是被代理对象的替身,拥有被代理接口的对象引用(Has-a关系);代理者和被代理者属于同一个类型;
装饰:装饰者和被装饰者继承同一个子类,被装饰者也可以装饰其他装饰者,所以装饰者内部拥有一个基类的引用(Has-a);装饰者和被装饰者属于同一个类型;
外观:外观类会提供一个统一的接口,同时也会暴露子系统的接口,让那些需要使用子系统底层功能的客户端调用

相同点:
1、



0 0