用意:
将关联性不是很大的类进行关联,可以通过适配器进行关联
例子:
我们前面也介绍过日志记录的方法
这是我们原来系统中有的方法,但是我们做到一半,需要引进一个新的日志记录法
这个日志记录方法是WriteLog,与我们原来的Write方法有很大的差别,因此我们需要给他套个Wrapper,也就跟COM一样进行包装(RCM)
包装方式有两种:继承和对象组合
继承:
继承是将每种日志记录方式都继承新的日志记录类,并实现了老的ILog接口,在接口Write方法中调用父类的WriteLog方法
namespace 大话设计模式 { class DatabaseAdapter : DatabaseLog1, ILog { public void Write() { this.WriteLog(); } } }
这样的坏处是所有日志记录方式都需要记录,这样耦合性太高
对象组合
将日志记录器作为属性,放在适配器中,这样只需要一个类就可以了
namespace 大话设计模式 { public class LogAdapter : ILog { private LogAdaptee logAdaptee; public LogAdapter(LogAdaptee logAdapter) { this.logAdaptee = logAdapter; } public void Write() { logAdaptee.WriteLog(); } } }