【发布时间】:2016-04-13 07:57:54
【问题描述】:
考虑这样的场景,你有一些数据,但你不想直接暴露它,而且涉及一些逻辑。所以你写这样的东西:
private string field;
public string Field
{
get { return this.field; }
set
{
// some logic with previous value
this.field = value;
// some logic with new value
}
}
好的,很酷,但是一旦你写了 N 次,你就足够了,所以你写了一个类 -- 包装器。由于您不想公开实现,因此您编写以下代码:
private Wrapper<string> field = new Wrapper<string>();
public string Field
{
get { return this.field.value;}
set { this.field.value = value; }
}
所以,好吧,通用代码被隐藏了,实现没有暴露,但仍然有很多重复。
问题——是否有可能进一步挤压它?
以上是我关于 C# 中的模式的主要问题,但我将此留作评论——是否有一种语言支持这种模式到只需要单行的程度。像这样的:
public string Field { get; set; } <- new Wrapper<string>(); // pseudo code
【问题讨论】:
-
使用代码 sn-p - 在您的情况下非常方便,而且比另一种语言更便宜
-
@Fabio,AFAIK sn-ps 在 创建 代码(编写)时是可以的,但是一旦它们在代码中,您就必须手动处理它们。所以它本身不是解决方案,它只是一种自动输入的方式,而不是用于管理代码。
-
您可以使用 sn-p 来“键入”您的 Wrapper 类。在这种情况下,您的托管逻辑保留在一个地方 -> 在您的包装类中
-
如果您不止一次编写相同的逻辑 - 那么您创建一个方法或创建一个包含该逻辑的新类型。 但仍然有很多重复 - 没关系,你使用你漂亮的 Wrapper 是对的。例如可以为空的
MyNullableProperty.Value是否也是重复的?
标签: c# design-patterns wrapper