我是Design Patterns的新手,我一直在努力研究如何在我的问题中应用策略,装饰器或访客模式。
我有一个WPF MVVM对话框,用于捕获Letter文档信息。 表格如下:
我为上面的项目使用了3个用户控件,因为每个项目捕获的信息略有不同:
我有一个Contact类,每个ViewModel捕获的信息略有不同。不同之处在于收件人/ CC具有“多个联系人”行为,而发件人/ CC具有“收藏联系人”行为。
目前我的逻辑是重复的,我试图让它更易于维护。
当我查看Strategy和Decorator模式时,超类包含有关每个行为的信息。是否可以在不添加超类的情况下将“添加”行为添加到具体实现中?
答案 0 :(得分:0)
根据您需要添加的功能类型,您可以使用extension methods
向具体类型“添加”行为,而不是继承。
例如,假设您有一个名为MyConcreteClass
的类,如下所示:
public class MyConcreteClass
{
public string PropertyOne { get; set; }
public void MethodOne { ... }
}
然后,您可以创建一个单独的扩展类,允许您在不修改原始实现的情况下添加功能。
namespace Extensions
{
public static class MyConcreteClassExtensions
{
public static string MethodTwo(this MyConcreteClass concreteClass)
{
// add new implementation here
return concreteClass.PropertyOne + " using extensions";
}
}
}
然后你可以简单地使用如下:
var c = new MyConcreteClass();
Console.WriteLine(c.MethodTwo());
有关详细信息,请参阅here