public interface IPhoneHandle
{
void Show();
}
public class ApplePhone : IPhoneHandle
{
public void Show()
{
Console.WriteLine("ApplePhone");
}
}
public class PhoneDecorator:IPhoneHandle
{
private IPhoneHandle _myPhone;
public PhoneDecorator(IPhoneHandle phone)
{
_myPhone = phone;
}
public PhoneDecorator()
{
}
public virtual void Show()
{
if(_myPhone != null)
{
_myPhone.Show();
}
}
}
public class Sticker:PhoneDecorator
{
public Sticker(IPhoneHandle phone) : base(phone) { }
public override void Show()
{
Console.WriteLine("with Sticker");
base.Show();
}
}
public class Accessories : PhoneDecorator
{
public Accessories(IPhoneHandle phone) : base(phone) { }
public override void Show()
{
Console.WriteLine("with Accessories");
base.Show();
}
}
<pre name="code" class="csharp"> IPhoneHandle phone = new Accessories(new Sticker(new PhoneDecorator()));
phone.Show();