学习笔记 : Java设计模式之Simple Factory Pattern
概述
简单工厂模式( Simple Factory Pattern) : 定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类. 其是一种创建型模式,需注意 : 简单工厂模式并不属于23种经典设计模式,但通常将它作为学习其他工厂模式的基础.
简单工厂模式中的角色
Factory( 工厂角色 )
: 工厂角色既工厂类,它是简单工厂模式的核心,负责实现创建所有产品实例的内部结构. 工厂类可以被外界访问直接调用,创建所需的产品对象. 在工厂类中提供了静态的工厂方法,其返回类型为抽象产品类型.Product( 抽象产品角色 )
: 它是工厂类创建的所有对象的父类,封装了各种对象的公有方法,它的引入提高了系统的灵活性.ConcreteProduct( 具体产品角色 )
: 它是简单工厂模式的创建目标,所有被创建的对象都充当这个角色的某个具体类的实例. 每一个具体产品角色都继承了抽象产品角色,需要实现在抽象产品中的抽象方法.
程序示例
下面是一个使用简单工厂模式的简单程序示例,其功能( 模拟 )描述 : 通过设置不同的参数即可得到不同类型的图表,而且可以较为方便地对图表进行扩展,以便能够在将来增加一些新类型的图表.
Chart接口 : 抽象图表接口, 充当抽象产品类
1
2
3
4
5
6
7
8
9
10
11
12
13
14package pers.huangyuhui.simple_factory_pattern;
/**
* @project: design-patterns
* @description: 抽象图表接口, 充当抽象产品类
* @author: 黄宇辉
* @date: 9/6/2019-9:36 AM
* @version: 1.0
* @website: https://yubuntu0109.github.io/
*/
public interface Chart {
void display();
}HistogramChart类 : 柱状图类, 充当具体产品类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21package pers.huangyuhui.simple_factory_pattern;
/**
* @project: design-patterns
* @description: 柱状图类, 充当具体产品类
* @author: 黄宇辉
* @date: 9/6/2019-9:37 AM
* @version: 1.0
* @website: https://yubuntu0109.github.io/
*/
public class HistogramChart implements Chart {
public HistogramChart() {
System.out.println("创建柱状图");
}
public void display() {
System.out.println("显示柱状图");
}
}PieChart类 : 饼状图类, 充当具体产品类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21package pers.huangyuhui.simple_factory_pattern;
/**
* @project: design-patterns
* @description: 饼状图类, 充当具体产品类
* @author: 黄宇辉
* @date: 9/6/2019-9:38 AM
* @version: 1.0
* @website: https://yubuntu0109.github.io/
*/
public class PieChart implements Chart {
public PieChart() {
System.out.println("创建饼状图");
}
public void display() {
System.out.println("显示饼状图");
}
}ChartFactory类 : 图表工厂类, 充当工厂类
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
27package pers.huangyuhui.simple_factory_pattern;
/**
* @project: design-patterns
* @description: 图表工厂类, 充当工厂类
* @author: 黄宇辉
* @date: 9/6/2019-9:40 AM
* @version: 1.0
* @website: https://yubuntu0109.github.io/
*/
public class ChartFactory {
//静态工厂方法
public static Chart getChar(String type) {
Chart chart = null;
if (type.equalsIgnoreCase("histogram")) {
chart = new HistogramChart();
System.out.println("初始化柱状图");
} else if (type.equalsIgnoreCase("pie")) {
chart = new PieChart();
System.out.println("初始化饼状图");
} else {
System.out.println("error : not found the object for the specified parameter");
}
return chart;
}
}Client类 : 客户端测试类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16package pers.huangyuhui.simple_factory_pattern;
/**
* @project: design-patterns
* @description: 客户端测试类
* @author: 黄宇辉
* @date: 9/6/2019-9:47 AM
* @version: 1.0
* @website: https://yubuntu0109.github.io/
*/
public class Client {
public static void main(String[] args) {
Chart histogram = ChartFactory.getChar("histogram");
histogram.display();
}
}程序运行结果如下所示 :
1
2
3创建柱状图
初始化柱状图
显示柱状图
示例程序类图
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment