0%

设计模式-简单工厂

一个工厂类创建所有产品

初始方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Chart{
private string type;

public Chart(object[][] data, string type){
this.type = type;
if(type.EqualsIgnoreCase("histogram")){
//柱状图
}
else if(type.EqualsIgnoreCase("pie")){
//饼图
}
else if(type.EqualsIgnoreCase("line")){
//折线图
}
}

public Display(){
if(type.EqualsIgnoreCase("histogram")){
//显示柱状图
}
else if(type.EqualsIgnoreCase("pie")){
//显示饼图
}
else if(type.EqualsIgnoreCase("line")){
//显示折线图
}
}
}

简单工厂

定义一个类, 可根据不同参数返回不同类的实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
interface IChart{
public void Display();
}

class HistogramChart : IChart{
public HistogramChart(){
//创建柱状图
}

public void Display(){
//显示柱状图
}
}
class PieChart : IChart{
public PieChart(){
//创建饼图
}

public void Display(){
//显示饼图
}
}

class ChartFactory{
public static IChart GetChart(string type){
IChart chart = null;
if(type.EqualsIgnoreCase("histogram")){
chart = new HistogramChart();
}
else if(type.EqualsIgnoreCase("pie")){
chart = new PieChart();
}
return chart;
}
}

class Client{
Chart chart = ChartFactory.GetChart("pie");
chart.Display();
}