标签:creat struct logs linechart pie 需要 pat sign rri
工厂方法模式(Factory Method Pattern)又被称为工厂模式,也叫虚构造器(Virtual Constructor)模式或多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义一个用于创建产品对象的公共接口,让子类决定实例化具体的产品对象。使产品类的实例化延迟到工厂子类中。
抽象产品类。定义工厂方法所创建的对象的接口。
具体产品类。实现Product接口,工厂方法的创建目标。
抽象工厂类。声明工厂方法,该方法返回一个Product类型的对象。也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
具体工厂类。重定义工厂方法以返回一个ConcreteProduct实例。
仍以上一篇(设计模式(一)—— 简单工厂)中图表工具包为例。
当我们添加产品(图表)时,ChartFactory工厂也要做出相应的修改,这就违反了类的开放封闭原则。
工厂方法模式创建了抽象工厂ChartFactory,分别实现了LineChartFactory、BarChartFactory以及PieChartFactory三个具体子类,并在工厂子类中返回相应的Chart实例。
public abstract class ChartFactory
{
public abstract Chart CreateChart();
}
public class LineChartFactory : ChartFactory
{
public override Chart CreateChart()
{
return new LineChart();
}
}
public class BarChartFactory : ChartFactory
{
public override Chart CreateChart()
{
return new BarChart();
}
}
public class PieChartFactory : ChartFactory
{
public override Chart CreateChart()
{
return new PieChart();
}
}
这样,在新增产品(图表)时,我们便不再需要修改已经完成的类,转而增加相应的产品及工厂子类即可。例如,现增加流程图FlowChart。
public class FlowChart : Chart
{
public override void Draw()
{
string flowChart = "| \n";
flowChart += "| \n";
flowChart += "| ------- \n";
flowChart += "| | START | \n";
flowChart += "| ------- \n";
flowChart += "| | \n";
flowChart += "| ------- \n";
flowChart += "| | ... | \n";
flowChart += "| ------- \n";
flowChart += "| | \n";
flowChart += "| ------- \n";
flowChart += "| | END | \n";
flowChart += "| ------- \n";
flowChart += "| \n";
flowChart += "|______________________________________";
Console.WriteLine(flowChart);
}
}
public class FlowChartFactory : ChartFactory
{
public override Chart CreateChart()
{
return new FlowChart();
}
}
static void Main(string[] args)
{
FlowChartFactory factory = new FlowChartFactory();
var flowChart = factory.CreateChart();
flowChart.Draw();
Console.ReadLine();
}
dotnet-design-pattern_factorymethod
标签:creat struct logs linechart pie 需要 pat sign rri
原文地址:https://www.cnblogs.com/Answer-Geng/p/8921553.html