【发布时间】:2013-12-06 03:02:15
【问题描述】:
我正在浏览装饰器设计模式,发现每个示例都使用一个抽象装饰器类,并且还实现了装饰器所针对的类的接口创建的。我的问题是,
是否需要有一个抽象的装饰器类,然后定义具体的装饰器?
-
我创建了一个示例,我认为它可以类似于上述抽象类方法所实现的功能。
public interface ICarModel { Int32 Price { get; } Int32 Tax { get; } } public class BaseModel : ICarModel { public Int32 Price { get { return 50000; } } public Int32 Tax { get { return 5000; } } public String GetBaseCarDetails() { return "Base car model Price is : " + this.Price + " and Tax is : " + this.Tax; } } public class LuxuryModel { ICarModel _iCarModel; public LuxuryModel(ICarModel iCarModel) { _iCarModel = iCarModel; } public Int32 Price { get { return _iCarModel.Price + 10000; } } public Int32 Tax { get { return _iCarModel.Tax + 3000; } } public String GetLuxuryCarDetails() { return "Luxury car model Price is : " + this.Price + " and Tax is : " + this.Tax; } }我们可以说这是装饰器模式的一个例子吗?
【问题讨论】:
-
@yannishristofakis 据我所知,
get{ }属性是 C# 独有的。不过不确定。 -
您的第一个问题可能与 this 重复
-
@Kalyan,这似乎是同一个问题,但不幸的是,我无法解释他在这里试图解释的确切含义。你能解释一下这个解释吗?
-
@TechJay 我试图在下面的回答中解释这一点。
标签: c# design-patterns