适配器模式
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
● Target目标角色:该角色定义把其他类转换为何种接口,也就是我们的期望接口。
● Adaptee源角色:你想把谁转换成目标角色,这个“谁”就是源角色,它是已经存在的、运行良好的类或对象,经过适配器角色的包装,它会成为一个崭新、靓丽的角色。
● Adapter适配器角色:适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要新建立的,它的职责非常简单:把源角色转换为目标角色,怎么转换?通过继承或是类关联的方式。
/// <summary> /// 目标角色 /// </summary> public interface Target { void request(); } /// <summary> /// 目标角色实现类 /// </summary> public class ConcreteTarget : Target { public void request() { Console.WriteLine("Concrete1"); } } /// <summary> ///源角色 /// </summary> public class Adaptee { public void dosomething() { Console.WriteLine("hi"); } } /// <summary> /// 适配器角色 /// </summary> public class Adapter : Adaptee, Target { public void request() { base.dosomething(); } }
static void Main(string[] args) { Target target = new ConcreteTarget(); target.request(); target = new Adapter(); target.request(); }
适配器模式的使用场景
适配器应用的场景只要记住一点就足够了:你有动机修改一个已经投产中的接口时,适配器模式可能是最适合你的模式。比如系统扩展了,需要使用一个已有或新建立的类,但这个类又不符合系统的接口,怎么办?使用适配器模式,这也是我们例子中提到的。
时间: 2024-10-13 02:35:33