当您有多个具有相同方法和实现的类时,可以使用哪种设计模式?
我考虑过使用提供方法访问的Facade模式。但是当我看到类图时,它并不是我想要的。
另一个想法是使用实现这些方法的(抽象)类,类将扩展这个(抽象)类。
下一个方法是在六个不同的类中定义的。有这样的多种方法,很难维护。
private void FactoryFaulted(object sender, EventArgs e)
{
ChannelFactory factory = (ChannelFactory)sender;
try
{
factory.Close();
}
catch
{
factory.Abort();
}
}
答案 0 :(得分:3)
您可以使用抽象类并对其进行扩展,或者创建一个Helper类,并调用所有类,如下所示:
public static Helper
{
public static void FactoryFaulted(object sender, EventArgs e)
{
ChannelFactory factory = (ChannelFactory)sender;
try
{
factory.Close();
}
catch
{
factory.Abort();
}
}
}
public class YourClass
{
public void DoSomething()
{
var channelFactory = new ChannelFactory();
Helper.FactoryFaulted(channelFactory, null);
}
}
答案 1 :(得分:1)
通常,处理相同代码的方式与处理类似代码的方式不同。设计模式(例如Template Method Pattern)有助于减少许多类中相似但不完全相同的代码量。
当代码相同时,您可以将其放在静态函数中,并按原样重用:
internal static class FactoryHelper {
// Note that your method is not using instance variables of the class,
// making it an ideal candidate for making a static helper method.
public static void FactoryFaulted(object sender, EventArgs e) {
ChannelFactory factory = (ChannelFactory)sender;
try {
factory.Close();
} catch {
factory.Abort();
}
}
}