主讲:李建忠
来源:http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/CsharpOOD.aspx
Adapterinterface IStack //客户期望的接口 { void Push(object item); object Pop(); object Peek(); } //对象适配器 class MyStack:IStack //adapter,适配对象 { ArrayList list; //adaptee,被适配对象 public MyStack() { list=new ArrayList(); } public void Push(object item) { list.Add(item); } object Pop() { return list.RemoveAt(list.Count-1); } object Peek() { return list[list.Count-1]; } } //类适配器 class MyStack:ArrayList,IStack //adapter,适配对象 { public void Push(object item) { this.Add(item); } object Pop() { return this.RemoveAt(this.Count-1); } object Peek() { return this[this.Count-1]; } }
EmployeeAdapterclass Employee { int age; string name; public int Age { get{return this.age;} set{this.age=value;} } } class EmployeeAdapter:IComparable { public int Compare(object obj1,object obj2) { if(obj1.GetType()!=typeof(Employee) ||obj2.GetType()!=typeof(Employee)) { throw new Exception(); } Employee e1=(Employee)obj1; Employee e2=(Employee)obj2; if(e1.Age==e2.Age) { return 0; } else if(e1.Age>e2.Age) { return 1; } else if(e1.Age<e2.Age) { return -1; } } } class App { public static void Main() { Employee[] employees=new Employee[100]; //... ArrayList.Sort(employees,new EmployeeAdapter()) } }