概述
在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。那么如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是本文要说的Adapter 模式。
意图
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
结构图
对象的Adapter模式
类的Adapter模式
代码
Code
1namespace Bll.Adapter
2{
3 public interface Log
4 {
5 void WriteLog();
6 }
7
8 public class DataBaseLog : Log
9 {
10 public void WriteLog()
11 { }
12 }
13
14 public class FileLog : Log
15 {
16 public void WriteLog()
17 { }
18 }
19
20 //现在要把WriteLog方法转化为Write方法
21 //1:类适配器
22 public interface Ilog
23 {
24 void Write();
25 }
26
27 public class DBLog : DataBaseLog, Ilog
28 {
29 public void Write()
30 {
31 this.WriteLog();
32 }
33 }
34
35 public class FLog : FileLog, Ilog
36 {
37 public void Write()
38 {
39 this.WriteLog();
40 }
41 }
42
43 //2:对象适配器
44 public class LogAdapter : Ilog
45 {
46 public Log log;
47 public LogAdapter(Log log)
48 {
49 this.log = log;
50 }
51
52 public void Write()
53 {
54 log.WriteLog();
55 }
56 }
57
58}
1namespace Bll.Adapter
2{
3 public interface Log
4 {
5 void WriteLog();
6 }
7
8 public class DataBaseLog : Log
9 {
10 public void WriteLog()
11 { }
12 }
13
14 public class FileLog : Log
15 {
16 public void WriteLog()
17 { }
18 }
19
20 //现在要把WriteLog方法转化为Write方法
21 //1:类适配器
22 public interface Ilog
23 {
24 void Write();
25 }
26
27 public class DBLog : DataBaseLog, Ilog
28 {
29 public void Write()
30 {
31 this.WriteLog();
32 }
33 }
34
35 public class FLog : FileLog, Ilog
36 {
37 public void Write()
38 {
39 this.WriteLog();
40 }
41 }
42
43 //2:对象适配器
44 public class LogAdapter : Ilog
45 {
46 public Log log;
47 public LogAdapter(Log log)
48 {
49 this.log = log;
50 }
51
52 public void Write()
53 {
54 log.WriteLog();
55 }
56 }
57
58}