设计模式之简单工厂模式

1.定义

简单工厂模式:工厂负责按照需求生产出指定的产品供客户使用。

以实现加减乘除功能的计算器的实例,来看一下简单工厂模式 要怎么操作的。

2.UML图:

3.Code

Operation.class:

abstract class Operation{
   public double numberA;
   public double numberB;

   abstract double getResult();

}

子类:

OperationAdd.class:

class OperationAdd extends Operation{

   public double getResult{
      return numerA + numberB;
   }
}

OperationSub.class:

class OperationSub extends Operation{

   public double getResult{
      return numerA - numberB;
   }
}

OperationMul.class:

class OperationMul extends Operation{

   public double getResult{
      return numerA * numberB;
   }
}

OperationDiv.class:

class OperationDiv extends Operation{

   public double getResult{
      if(numberB == 0){
         throw new Exception("除数不能为0");
      }else{
         return numerA / numberB;
      }        
   }
}

OperationFactory.class:

class OperationFactory{

   public static Operation createOperation(String operator,String numberA,String numberB){
        Operation operation = null;
        switch(operator){
           case "+":
               operation = new OperationAdd(); 
               break;
           case "-":
               operation = new OperationSub(); 
               break;
           case "*":
               operation = new OperationMul(); 
               break;
           case "/":
               operation = new OperationDiv(); 
               break;
        }

        operation.numberA = numberA;
        operation.numberB = numberB;
   }
}

Client.class

public class Client{
   public static void main(String[] args){
       Operation operation = OperationFactory.create("+",2,4);
       double result = operation.getResult();   
   } 
}

4.总结

简单工厂模式是基于面向对象的三大特性:

  • 封装:将计算过程封装到计算类Operation中
  • 继承:通过一个公共父类定义计算方法,子类继承父类实现各自的计算方法,并且能够共享父类中的参数numberA和numberB
  • 多态:四个计算类在Client中可以引用共同的父类Operation,通过操作符表现出不同的特性。

简单工厂模式通过工厂封装具体实现,客户端只要传入条件,即可在工厂内部生成不同的对象,并且这些对象有共同的父类,抽象父类定义了公共的行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值