ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

大话设计模式------简单工厂模式

2019-09-30 23:00:38  阅读:199  来源: 互联网

标签:operation double 大话 工厂 class new Operation 设计模式 public


工厂方法模式:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

一、简单工厂模式:

实例化对象的时候不再使用 new Object()形式,可以根据用户的选择条件来实例化相关的类。对于客户端来说,去除了具体的类的依赖。只需要给出具体实例的描述给工厂,工厂就会自动返回具体的实例对象。

 

 

import lombok.Data;

@Data
public abstract class Operation {

private double numberA = 0;
private double numberB = 0;

public abstract double getResult() throws Exception;
}

public class OperationAdd extends Operation{
@Override
public double getResult() {
return getNumberA() + getNumberB();
}
}
public class OperationSub extends Operation {
@Override
public double getResult() {
return getNumberA() - getNumberB();
}
}
public class OperationMul extends Operation {
@Override
public double getResult() {
return getNumberA() * getNumberB();
}
}
public class OperationDiv extends Operation  {
@Override
public double getResult() throws Exception {
if(getNumberB() == 0){
throw new Exception("除数不能为0");
}
return getNumberA() / getNumberB();
}
}

public class OperationFactory {

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

public class TestOperation {

public static void main(String[] args) {
Operation operation = OperationFactory.createOperation("+");
try {
operation.setNumberA(10);
operation.setNumberB(20);
System.out.println(operation.getResult());
} catch (Exception e) {
e.printStackTrace();
}
}
}

 

标签:operation,double,大话,工厂,class,new,Operation,设计模式,public
来源: https://www.cnblogs.com/zsmcwp/p/11614431.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有