简述:在不修改类的前提下可以给类添加功能
//照相机抽象基类
public abstract class ICamera
{
public abstract void photo();
}
//具体的照相机类
public class ConcreCamera : ICamera
{
public override void photo()
{
Console.WriteLine("拍照");
}
}
//抽象装饰类
public abstract class Decorator:ICamera
{
public ICamera camera;
public Decorator(ICamera camera)
{
this.camera = camera;
}
public override void photo()
{
if (camera!=null)
{
camera.photo();
}
}
}
public class Effect_Beauty:Decorator
{
public Effect_Beauty(ICamera camera):base(camera)
{
}
public override void photo()
{
Console.WriteLine("添加美颜特效");
camera.photo();
}
}
public class Effect_Filter : Decorator
{
public Effect_Filter(ICamera camera) : base(camera)
{
}
public override void photo()
{
Console.WriteLine("添加滤镜特效");
camera.photo();
}
}
class Program
{
static void Main(string[] args)
{
//装饰模式
ICamera cam = new Effect_Filter(new Effect_Beauty(new ConcreCamera()));
cam.photo();
Console.ReadLine();
}
}