using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace ConsoleApplication3 { abstract class Compnent { abstract public void Operation(); } class ConcreateCompnent : Compnent { public override void Operation() { Console.WriteLine("这是照片"); } } class Decorate:Compnent { Compnent aCompnent; public void set(Compnent a) { aCompnent = a; } public override void Operation() { aCompnent.Operation(); } } class DecorateA : Decorate { public override void Operation() { base.Operation(); Console.WriteLine("给照片加一个框"); } } class DecorateB : Decorate { public override void Operation() { base.Operation(); Console.WriteLine("给照片PS一下"); } } class Program { static void Main(string[] args) { ConcreateCompnent aConcreate = new ConcreateCompnent(); Decorate aDecorate = new Decorate(); DecorateB b = new DecorateB(); DecorateA a = new DecorateA(); a.set(aConcreate); //b.set(a); a.Operation(); } } }