编写如下客户端测试代码:
编译并运行程序,输出结果如下:
创建柱状图!
初始化设置柱状图!
显示柱状图!
在客户端测试类中,我们使用工厂类的静态工厂方法创建产品对象,如果需要更换产品,只需修改静态工厂方法中的参数即可,例如将柱状图改为饼状图,只需将代码:
chart = ChartFactory.getChart("histogram");
改为:
chart = ChartFactory.getChart("pie");
编译并运行程序,输出结果如下:
创建饼状图!
初始化设置饼状图!
显示饼状图!
4 方案的改进
Sunny软件公司开发人员发现在创建具体Chart对象时,每更换一个Chart对象都需要修改客户端代码中静态工厂方法的参数,客户端代码将要重新编译,这对于客户端而言,违反了“开闭原则”,有没有一种方法能够在不修改客户端代码的前提下更换具体产品对象呢?答案是肯定的,下面将介绍一种常用的实现方式。
我们可以将静态工厂方法的参数存储在XML或properties格式的配置文件中,如下config.xml所示:
再通过一个工具类XMLUtil来读取配置文件中的字符串参数,XMLUtil类的代码如下所示: