简单工厂模式

简单工厂模式

定义一个工厂类,他可以根据参数的不同返回不同的实例,被创建的实例通常都具有共同的父类。

简单工厂模式结构

  • Factory(工厂角色):简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。

  • Product(抽象产品角色):是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。

  • ConcreteProduct(具体产品角色):是简单工厂模式的创建目标。

  • 类图

 

自己理解:具体产品就是模板,抽象产品就是接口,工厂角色就是实例化对象。工厂调用接口,使用模板来new对象。

简单工厂模式应用实例

  • 实例说明

设计一套图表库(柱状图、饼图、折线图等),通过设计不同参数来得到不同类型的图表。

  • 实例分析

Factory角色为图表库(ChartFactory),Product角色为图表(Chart),ConcreteProduct角色为柱状图、饼图、折线图等。

  • 实例类图

 

  • 实例代码

    • Chart接口

      public interface Chart {
          public void display();
      }

    • PieChart和HistogramChart具体lei

      public class PieChart implements Chart{
      ​
          public PieChart(){
              System.out.println("创建饼图");
          }
          @Override
          public void display() {
              System.out.println("显示饼图");
          }
      }
      public class HistogramChart implements Chart{
      ​
          public HistogramChart(){
              System.out.println("创建柱状图");
          }
          @Override
          public void display() {
              System.out.println("显示柱状图");
          }
      }

    • ChartFactory类

      public 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;
          }
      }

    • Client(客户)类

      public class Client {
          public static void main(String[] args) {
              
              Chart histogramchart;
              histogramchart=ChartFactory.getChart("histogram");
              histogramchart.display();
              System.out.println("----------");
      ​
              Chart pieChart;
              pieChart=ChartFactory.getChart("pie");
              pieChart.display();
              System.out.println("----------");
          }
      }

    • 实验效果

      创建柱状图
      初始化设置柱状图!
      显示柱状图
      ----------
      创建饼图
      初始化设置饼图!
      显示饼图
      ----------

  • 简单工厂模式优缺点与适用环境

    • 优点:实现了对象创建和使用分离;客户只需知道参数即可,不需类名;引入配置文件则不需要修改客户端代码即可修改。

    • 缺点:职责过重,扩展性困难,不具备开闭原则。

    • 适用环境:对象较少,客户端对如何创建对象不关心,知道相应参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我愿为一粒沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值