/// <summary>
    /// 打印机抽象类
    /// </summary>
   public abstract  class PrintBasic
    {
        private string name;        public string Name
        {
            get { return name; }
            set { name = value; }
        }
       /// <summary>
       /// 打印方法
       /// </summary>
        public abstract void Print();
         }    /// <summary>
    /// A打印机
    /// </summary>
   public class PrintA : PrintBasic
   {
       public PrintA(string name)
       {
           this.Name = name;
       }
       public override void Print()
       {
           Console.WriteLine(String.Format("我是{0}打印机",this.Name));
       }
   }   /// <summary>
   /// B打印机
   /// </summary>
   public class PrintB : PrintBasic
   {
       public PrintB(string name)
       {
           this.Name = name;
       }
       public override void Print()
       {
           Console.WriteLine(String.Format("我是{0}打印机", this.Name));
       }
   }   /// <summary>
   /// C打印机
   /// </summary>
   public class PrintC : PrintBasic
   {
       public PrintC(string name)
       {
           this.Name = name;
       }
       public override void Print()
       {
           Console.WriteLine(String.Format("我是{0}打印机", this.Name));
       }
   }    public delegate void delePrint();
    /// <summary>
    /// 计算机
    /// </summary>
   public class Computer
   {
       public event delePrint Print;
       public void CmdPrint()
       {
           Console.WriteLine("start print.....");
           if (Print != null)
           {
               Print();
           }
           Console.WriteLine("end print.....");
       }
   }    /// <summary>
    /// 打印机工厂类
    /// </summary>
    public class PrintFactory
    {
        public PrintBasic GetPrint(string name)
        {
            PrintBasic print;
            switch (name)
            {
                case "A":
                    print = new PrintA(name);
                    break;
                case "B":
                    print = new PrintB(name);
                    break;
                case "C":
                    print = new PrintC(name);
                    break;
                default:
                    print = new PrintA(name);
                    break;
            }
            return print;
        }
        
      
    }
class Program
    {
        static void Main(string[] args)
        {
            
            PrintBasic pb = new PrintFactory().GetPrint("A");
            Computer cp = new Computer();
            cp.Print += new delePrint(pb.Print);
            cp.CmdPrint();
            Console.Read();
            
        }
            
        
    }

解决方案 »

  1.   

    本帖最后由 caozhy 于 2012-03-30 18:54:23 编辑
      

  2.   

    在另外一个帖子里面有人说“委托、接口”这些都是“理论”,而且这些理论“跟你的编程水平没有直接的关系”。(http://topic.csdn.net/u/20120327/18/59200c5c-c620-4bfa-814e-0fea2c075c59.html)我不想再评论他们的这个观点,因为如果我看到如此的“说明用法”,我得到的结论不会和他们有什么不同。