设计模式之适配器模式(Adapter)

8 篇文章 0 订阅
7 篇文章 0 订阅

简介

  • 适配器模式:将一个类的接口转换成客户所希望的另一个接口
  • 适配器模式使原本接口不兼容导致不能调用的那些类或接口,可以适配一起工作

原理

兼容原来无法使用的接口,相当于一个接口转换器

作用

优点
  1. 可以让任何两个没有关联的类一起运行
  2. 提高了类的复用
  3. 增加了类的透明度
  4. 灵活性好
缺点
  1. 过多地使用适配器,会让系统非常零乱,不易整体进行把握
  2. 对于单继承的编程语言,至多只能适配一个适配者类,而且目标类必须是抽象类

使用场景

  1. 系统要使用的类,无法兼容时
  2. 想要将一个类应用于某个类的体系中时
  3. 没有一致性的接口,但又希望能重复使用的类

实现

UML 图

  1. 采用继承原有接口类的方式
    在这里插入图片描述

  2. 采用组合原有接口类的方式
    在这里插入图片描述

代码

  • 使用第二种实现方式
class Program
{
	static void Main() {
		Adaptee adaptee = new Adaptee();
		Target  target  = new Adapter(adaptee);
		target.Request();
	}
    
	//需要被适配的类
	public class Target {
		public virtual void Request() {}
	}

	//与被适配对象提供不兼容接口的类
	public class Adaptee {
		public void SpecialRequest() {
			Console.WriteLine("SpecialRequest of Adaptee");
		}
	}

	//进行适配的类,采用聚合原有接口类的方式
	public class Adapter : Target {
		private Adaptee m_adaptee = new Adaptee();

		public Adapter(Adaptee adaptee) {
			m_adaptee = adaptee;    
		}
        
		public override void Request() {
			Console.WriteLine("Request of Adapter");
			m_adaptee.SpecialRequest();
		}
	}
}

输出:

Request of Adapter
SpecialRequest of Adaptee
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值