声明:本博文仅仅为本人的理解,与看法。如有不对欢迎指出
简单工厂模式存在的意义:
可以根据不同的参数,选择想要的同一对象的,分类对象。(老实说感觉没什么存在的意义。是所有工厂模式最底层的一个思想罢了)
举例:
我想开发个图表(char)选择模块,图表分别有柱状图(HistogramChart),折线图(LineChart),饼状图(PieChart)等等。
我选择(ChartFactory)的图表随时会切换的。 然后就使用。
1.首先我想开发一个图表(char)
interface Chart
{
//图表的输血是,显示
void Display();
}
2.图表分别有柱状图(HistogramChart)
public class HistogramChart:Chart
{
//初始化的时候显示
public HistogramChart() {
Console.WriteLine("创建柱状图");
}
public void Display() {
Console.WriteLine("显示柱状图");
}
}
2.图表分别有折线图(LineChart)
public class LineChart:Chart
{
public LineChart() {
Console.WriteLine("创建折线图");
}
public void Display() {
Console.WriteLine("显示折线图");
}
}
3.图表分别有饼状图(PieChart)
//饼状图
public class PieChart:Chart
{
public PieChart() {
Console.WriteLine("创建饼状图");
}
public void Display() {
Console.WriteLine("显示饼状图");
}
}
4.我选择(ChartFactory)的图表随时会切换
class ChartFactory
{
//静态工厂
public static Chart GetChart(string type) {
Chart chart = null;
if (type.Equals("histogram"))
{
chart = new HistogramChart();
Console.WriteLine("初始化柱状图");
}
else if (type.Equals("pie")) {
chart = new PieChart();
Console.WriteLine("初始化饼状图");
}
else if (type.Equals("line"))
{
chart = new LineChart();
Console.WriteLine("初始化折线图");
}
return chart;
}
}
5.使用Mian
static void Main(string[] args)
{
Chart chart;
//chart 图形具体实现那个,由ChartFactory工厂决定。 "histogram"参数可以写到配置文件中
chart = ChartFactory.GetChart("histogram");
//实现对应工厂的,Display方法
chart.Display();
chart = ChartFactory.GetChart("pie");
//实现对应工厂的,Display方法
chart.Display();
Console.Read();
}
全部代码:https://download.csdn.net/download/wangwengrui40/13073669