2019-06-08 12:19  阅读(4707)
文章分类:史上最全设计模式 文章标签:设计模式Java 设计模式
©  原文作者:Liuwei-Sunny 原文地址:https://blog.csdn.net/lovelion

作者:Liuwei-Sunny

出处:https://blog.csdn.net/lovelion


3完整解决方案

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

2019060810015_1.png

在图2中,Chart接口充当抽象产品类,其子类HistogramChart、PieChart和LineChart充当具体产品类,ChartFactory充当工厂类。完整代码如下所示:

//抽象图表接口:抽象产品类
interfaceChart{
    publicvoiddisplay();
}

//柱状图类:具体产品类
classHistogramChartimplementsChart{
    publicHistogramChart(){
        System.out.println("创建柱状图!");
    }

    publicvoiddisplay(){
        System.out.println("显示柱状图!");
    }
}

//饼状图类:具体产品类
classPieChartimplementsChart{
    publicPieChart(){
        System.out.println("创建饼状图!");
    }

    publicvoiddisplay(){
        System.out.println("显示饼状图!");
    }
}

//折线图类:具体产品类
classLineChartimplementsChart{
    publicLineChart(){
        System.out.println("创建折线图!");
    }

    publicvoiddisplay(){
        System.out.println("显示折线图!");
    }
}

//图表工厂类:工厂类
classChartFactory{
//静态工厂方法
    publicstaticChartgetChart(Stringtype){
        Chartchart=null;
        if(type.equalsIgnoreCase("histogram")){
            chart=newHistogramChart();
            System.out.println("初始化设置柱状图!");
        }
        elseif(type.equalsIgnoreCase("pie")){
            chart=newPieChart();
            System.out.println("初始化设置饼状图!");
        }
        elseif(type.equalsIgnoreCase("line")){
            chart=newLineChart();
            System.out.println("初始化设置折线图!");            
        }
        returnchart;
    }
}

编写如下客户端测试代码:

classClient{
    publicstaticvoidmain(Stringargs[]){
        Chartchart;
        chart=ChartFactory.getChart("histogram");//通过静态工厂方法创建产品
        chart.display();
    }
}

编译并运行程序,输出结果如下:

创建柱状图!

初始化设置柱状图!

显示柱状图!

在客户端测试类中,我们使用工厂类的静态工厂方法创建产品对象,如果需要更换产品,只需修改静态工厂方法中的参数即可,例如将柱状图改为饼状图,只需将代码:

chart=ChartFactory.getChart("histogram");

改为:

chart=ChartFactory.getChart("pie");

编译并运行程序,输出结果如下:

创建饼状图!

初始化设置饼状图!

显示饼状图!
点赞(4)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> 工厂三兄弟之简单工厂模式(三):图表库的简单工厂模式解决方案
上一篇
工厂三兄弟之简单工厂模式(二):简单工厂模式概述
下一篇
工厂三兄弟之简单工厂模式(四):总结