技术开发 频道

结构型模式篇-适配器模式(Adapter Pattern)


适配器模式解说


    我们还是以日志记录程序为例子说明Adapter模式。现在有这样一个场景:假设我们在软件开发中要使用一个第三方的日志记录工具,该日志记录工具支持数据库日志记录DatabaseLog和文本文件记录FileLog两种方式,它提供给我们的API接口是Write()方法,使用方法如下:

Log.Write("Logging Message!");

    当软件系统开发进行到一半时,处于某种原因不能继续使用该日志记录工具了,需要采用另外一个日志记录工具,它同样也支持数据库日志记录DatabaseLog和文本文件记录FileLog两种方式,只不过它提供给我们的API接口是WriteLog()方法,使用方法如下:

Log.WriteLog("Logging Message!");

该日志记录工具的类结构图如下:
 
           图4日志记录工具类结构图

它的实现代码如下:
public abstract class LogAdaptee { public abstract void WriteLog(); } public class DatabaseLog:LogAdaptee { public override void WriteLog() { Console.WriteLine("Called WriteLog Method"); } } public class FileLog:LogAdaptee { public override void WriteLog() { Console.WriteLine("Called WriteLog Method"); } }
    在我们开发完成的应用程序中日志记录接口中(不妨称之为ILogTarget接口,在本例中为了更加清楚地说明,在命名上采用了Adapter模式中的相关角色名字),却用到了大量的Write()方法,程序已经全部通过了测试,我们不能去修改该接口。代码如下:
public interface ILogTarget { void Write(); }


0
相关文章