如何将行为移到单独的类中
本文关键字:单独 | 更新日期: 2023-09-27 18:04:16
我是设计模式的新手,我一直在努力找出如何将策略,装饰器或访问者模式应用于我的问题。
我有一个WPF MVVM对话框,用于捕获Letter文档信息。该表单包含以下内容:
- 收件人联系人组
- a发件人1联系人
- a发件人2联系人
- 一组CC联系人
- BCC联系人组
我为上面的项目使用了3个用户控件,因为每个控件捕获的信息略有不同:
- 发送者
- CCs (bcc使用)
我有一个单独的Contact类,每个ViewModel捕获的信息略有不同。不同之处在于,收件人/抄送人有"多个联系人"行为,发件人/抄送人有"收藏联系人"行为。
目前我的逻辑是重复的,我正在努力使它更易于维护。
当我查看Strategy和Decorator模式时,超类包含了每个行为的信息。是否有可能只是"添加"行为的具体实现,而不添加到超类?
您可以将行为"添加"到使用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());
更多信息,请看这里