代码改变世界

[导入]设计模式adapter

2005-12-09 08:36  BAsil  阅读(240)  评论(0编辑  收藏  举报

using System;

namespace Basil.Adapter
{
 ///


 /// Class1 的摘要说明。
 ///

 class Class1
 {
  ///
  /// 应用程序的主入口点。
  ///

  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
   //
   adapter apt=new adapter(new squarehole());
   //apt.squareholeobject=new squarehole();
   apt.insertarectanglehole("rectangle");
   apt.insert("square");

   adapter2 apt2=new adapter2();
   ((squarehole)(apt2.a)).insertasquarehole("square");
   ((rectanglehole)(apt2.b)).insertarectanglehole("rectangle");
   
   
  }
 }
 class squarehole:isquare
 {
  public void insertasquarehole(string str)
  {
          Console.WriteLine("put something into a square hole");
  }

 }
 class rectanglehole:irectangle
 {
  public void insertarectanglehole(string str)
  {
          Console.WriteLine("put something into a rectangle hole");
  }

 }
 interface hole
 {

 }
 class squareholechild :squarehole, hole
 {
 }
 class rectangleholechild:rectanglehole,hole
 {

 }
 interface irectangle
 {
  void insertarectanglehole(string str);
 }
 interface isquare
 {
       void insertasquarehole(string str);
 } 
 class adapter3:irectangle,isquare
 {
  private rectanglehole a;
      private squarehole b;

  // 构造方法
      public adapter3(rectanglehole a){this.a=a;}
  // 构造方法
      public adapter3(squarehole b){this.b=b;}

      public void insertasquarehole(String str){ b.insertasquarehole(str);}
  public void insertarectanglehole(string str){a.insertarectanglehole(str);}


 }
 class adapter2
 {
      public hole a=new squareholechild();
   public hole b=new rectangleholechild();
 }
 class adapter:rectanglehole
 {
  private squarehole _squareholeobject;
  public adapter(squarehole s)
  {
           this._squareholeobject=s;
  }
//  public squarehole squareholeobject
//  {
//   set{_squareholeobject=value;}
//     get{return _squareholeobject; }
//     }
  public void insert(string str)
  {
           _squareholeobject.insertasquarehole(str);
          
  }
       

 }
}

本篇文章使用aigaogao Blog软件发布, “我的Blog要备份”


文章来源:http://blog.donews.com/basilwang/archive/2005/12/09/651737.aspx