意图:将类的接口转换成客户希望的另一个接口。
结构图:
1.对象适配器
2.类适配器
对象适配器实现:
public class Target{
public virtual void Request(){
.....
}
}
public class Adaptee{
public virtual void SpecificRequest(){
....
}
}
public AdapteeToTarget:Target{
private Adaptee adaptee = new Adaptee();
public override void Request(){
adaptee.SpecificRequest();
}
}
public Class Client{
statics void Main(){
Target target = new AdapteeToTarget();
target. Request();
}
}
优点:不修改原来代码,复用现有类。
缺点:采用了“多继承”的实现方式,带来了不良的高耦合。
类适配器实现:
public interface ITarget{
void Request();
}
public abstract class Adaptee{
public void SpecificRequest(){
....
}
}
public class AdapteeToTarget:Adaptee,ITarget{
public void Request(){
this.SpecificRequest();
}
}
优点:采用“对象组合”的方式,更符合低耦合。
缺点:需要引用Adaptee子类,而不是Adaptee本身。
使用场景:系统需要复用现有的类,而该类的接口不符合系统需求。
想要建立一个可重复使用的类,用于一些彼此之间没有太大关联的类。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步