3 完整解决方案
为了将Chart类的职责分离,同时将Chart对象的创建和使用分离,Sunny软件公司开发人员决定使用简单工厂模式对图表库进行重构,重构后的结构如图2所示:
图2 图表库结构图
在图2中,Chart接口充当抽象产品类,其子类HistogramChart、PieChart和LineChart充当具体产品类,ChartFactory充当工厂类。完整代码如下所示:
//抽象图表接口:抽象产品类
interface Chart {
public void display();
}
//柱状图类:具体产品类
class HistogramChart implements Chart {
public HistogramChart() {
System.out.println("创建柱状图!");
}
public void display() {
System.out.println("显示柱状图!");
}
}
//饼状图类:具体产品类
class PieChart implements Chart {
public PieChart() {
System.out.println("创建饼状图!");
}
public void display() {
System.out.println("显示饼状图!");
}
}
//折线图类:具体产品类
class LineChart implements Chart {
public LineChart() {
System.out.println("创建折线图!");
}
public void display() {
System.out.println("显示折线图!");
}
}
//图表工厂类:工厂类
class ChartFactory {
//静态工厂方法
public static Chart getChart(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 if (type.equalsIgnoreCase("line")) {
chart = new LineChart();
System.out.println("初始化设置折线图!");
}
return chart;
}
}
编写如下客户端测试代码:
class Client {
public static void main(String args[]) {
Chart chart;
chart = ChartFactory.getChart("histogram"); //通过静态工厂方法创建产品
chart.display();
}
}
编译并运行程序,输出结果如下:
在客户端测试类中,我们使用工厂类的静态工厂方法创建产品对象,如果需要更换产品,只需修改静态工厂方法中的参数即可,例如将柱状图改为饼状图,只需将代码:
chart = ChartFactory.getChart("histogram"); |
改为:
chart = ChartFactory.getChart("pie"); |
编译并运行程序,输出结果如下:
【作者:刘伟 http://blog.csdn.net/lovelion】
分享到:
相关推荐
六个创建型模式 六个创建型模式 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(一) 工厂三兄弟之简单工厂模式(二) 工厂三兄弟之简单工厂模式(三) 工厂三兄弟之简单工厂模式(四) 工厂方法...
- **工厂三兄弟之简单工厂模式**:简单工厂模式通过一个工厂类负责创建所有实例,简化了客户端的使用方式。 2. **工厂方法模式**:定义了一个用于创建对象的接口,但允许子类决定实例化哪一个类。 - **工厂三兄弟...
中文版的设计模式,包括工厂模式、策略模式等,给打家提供设计上的参考。卷三
1. **工厂三兄弟之简单工厂模式** - **目的**:通过一个工厂类根据传入的参数决定实例化哪个具体的产品类。 - **优点**:客户端不需要知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可。 - *...
《兄弟一体机DCP-7010-7025维修手册》是针对兄弟公司推出的DCP-7010和DCP-7025型号一体机的专业维修指导资料,旨在帮助用户和维修技术人员解决设备在使用过程中可能出现的各种问题。这份手册详细阐述了这两款多功能...
随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。... 呵呵,下次再讲讲业务逻辑方面吧,希望给做DELPHI三层的兄弟一个参考。我的QQ: 11718111 Email: wu_yanan2003@yahoo.com.cn
4. **影响**:生产力大幅提高,工业生产模式从手工工场转变为大机器生产,社会结构发生变化,催生了现代工厂制度,推动了全球贸易和殖民扩张,同时也加剧了社会贫富差距。 **第二次科技革命(电力革命)** 1. **...
设计模式部分可能包括了创建型模式(如工厂模式、单例模式、建造者模式等)、结构型模式(如适配器模式、装饰器模式、代理模式等)、行为型模式(如策略模式、观察者模式、迭代器模式等)的定义、特点、使用场景和...
我的家乡,曾是一片碧波荡漾、绿树成荫的宁静之地。记忆里,春天,燕子兄弟掠过水面,衔泥造窝;夏日,孩子们在河里嬉戏捉鱼;秋风起时,燕子兄弟飞往北方;而冬日,河面结冰,鲤鱼弟弟静卧水底。这样的四季更迭,...
- **数据定义功能**: 定义数据库的模式、外模式和内模式。 - **数据操纵功能**: 包括查询、插入、删除和修改数据等操作。 - **数据库的运行管理**: 包括并发控制、故障恢复等。 - **数据库的建立和维护功能**: 包括...
雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...
雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...
雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...
雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...
雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...
11. 多对多联系:三个实体型的多对多联系与两两间的联系不一定等价,因为关系的复杂性可能导致不同的连接模式。 12. 学校E-R模型:包含系、班级、教研室、教员、学生和课程等实体及它们之间的多对多联系。 13. ...
C市轻工业品进出口公司采用了一种被称为“四自三不见”的业务模式进行欺诈。该模式允许企业自主选择客户、货源、汇票和自行报关,而不与外商见面、不看货物、不接触工厂。这种模式在缺乏有效的外部监督和内部管理的...