`
runfeel
  • 浏览: 899552 次
文章分类
社区版块
存档分类
最新评论

工厂三兄弟之简单工厂模式(三)

 
阅读更多

3 完整解决方案

为了将Chart类的职责分离,同时将Chart对象的创建和使用分离,Sunny软件公司开发人员决定使用简单工厂模式对图表库进行重构,重构后的结构如图2所示:

2 图表库结构图

在图2中,Chart接口充当抽象产品类,其子类HistogramChartPieChartLineChart充当具体产品类,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

分享到:
评论

相关推荐

    Java设计模式 版本2

    Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...

    design-pattern-java.pdf

    六个创建型模式 六个创建型模式 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(一) 工厂三兄弟之简单工厂模式(二) 工厂三兄弟之简单工厂模式(三) 工厂三兄弟之简单工厂模式(四) 工厂方法...

    设计模式中文版第一部分,英文不太好的兄弟的福音(卷三)

    中文版的设计模式,包括工厂模式、策略模式等,给打家提供设计上的参考。卷三

    Delphi最新三层源码

    随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。... 呵呵,下次再讲讲业务逻辑方面吧,希望给做DELPHI三层的兄弟一个参考。我的QQ: 11718111 Email: wu_yanan2003@yahoo.com.cn

    (全)传智播客PHP就业班视频完整课程

    雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...

    史上最全传智播客PHP就业班视频课,8月份视频

    雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    雇员管理系统②-model1模式简单登录 9-19 3.雇员管理系统③-model1模式数据库登录 9-19 4.雇员管理系统④-model1模式雇员分页 9-19 5.雇员管理系统⑤-分层模式管理员登录 9-20 1.回顾 9-20 2.雇员管理系统⑥-分层...

    JavaScript王者归来part.1 总数2

     6.5.2 模式--函数工厂及其实例   6.6 总结   第7章 对象  7.1 什么是对象   7.2 对象的属性和方法   7.2.1 对象的内置属性   7.2.2 为对象添加和删除属性   7.2.3 反射机制--枚举对象属性   7.3 ...

    javaSE代码实例

    10.4.4 调用兄弟构造器 187 10.5 单列模式 189 10.6 Java程序的加载过程 190 10.7 小结 192 第三篇 高级基础篇 第11章 异常处理——Java世界的医生 195 11.1 异常处理的基本知识 195 11.1.1 try和...

Global site tag (gtag.js) - Google Analytics