zoukankan      html  css  js  c++  java
  • 工厂三兄弟之简单工厂模式(三)

    3 完整解决方案

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

    2 图表库结构图

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

    1. //抽象图表接口:抽象产品类  
    2. interface Chart  
    3.     public void display();  
    4.  
    5.   
    6. //柱状图类:具体产品类  
    7. class HistogramChart implements Chart  
    8.     public HistogramChart()  
    9.         System.out.println("创建柱状图!");  
    10.      
    11.       
    12.     public void display()  
    13.         System.out.println("显示柱状图!");  
    14.      
    15.  
    16.   
    17. //饼状图类:具体产品类  
    18. class PieChart implements Chart  
    19.     public PieChart()  
    20.         System.out.println("创建饼状图!");  
    21.      
    22.       
    23.     public void display()  
    24.         System.out.println("显示饼状图!");  
    25.      
    26.  
    27.   
    28. //折线图类:具体产品类  
    29. class LineChart implements Chart  
    30.     public LineChart()  
    31.         System.out.println("创建折线图!");  
    32.      
    33.       
    34.     public void display()  
    35.         System.out.println("显示折线图!");  
    36.      
    37.  
    38.   
    39. //图表工厂类:工厂类  
    40. class ChartFactory  
    41.     //静态工厂方法  
    42.     public static Chart getChart(String type)  
    43.         Chart chart null 
    44.         if (type.equalsIgnoreCase("histogram"))  
    45.             chart new HistogramChart();  
    46.             System.out.println("初始化设置柱状图!");  
    47.          
    48.         else if (type.equalsIgnoreCase("pie"))  
    49.             chart new PieChart();  
    50.             System.out.println("初始化设置饼状图!");  
    51.          
    52.         else if (type.equalsIgnoreCase("line"))  
    53.             chart new LineChart();  
    54.             System.out.println("初始化设置折线图!");              
    55.          
    56.         return chart;  
    57.      
    58.  

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

    1. class Client  
    2.     public static void main(String args[])  
    3.         Chart chart;  
    4.         chart ChartFactory.getChart("histogram"); //通过静态工厂方法创建产品  
    5.         chart.display();  
    6.      
    7.  

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

    创建柱状图!

    初始化设置柱状图!

    显示柱状图!

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

    chart = ChartFactory.getChart("histogram");

           改为:

    chart = ChartFactory.getChart("pie");

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

    创建饼状图!

    初始化设置饼状图!

    显示饼状图!

  • 相关阅读:
    一分钟搞懂列式与行式数据库(转)
    docker daemon 配置文件
    Docker-删除untagged docker images
    全栈JavaScript之路(十三)了解 ElementTraversal 规范
    static, readonly, const
    Timer与AlarmManager的差别
    计算客 (人人都有极客精神)爆力
    nginx 配置web 虚拟文件夹 而且codeIgniter,thinkphp 重定向url 地址
    单例模式之 懒汉模式普通版
    POJ 3468 A Simple Problem with Integers 【树状数组】
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254900.html
Copyright © 2011-2022 走看看