工厂模式
来源:互联网 发布:mysql连接期限 编辑:程序博客网 时间:2024/06/09 17:15
工厂方法模式是创建型模式,定义一个创建产品对象的工厂接口,将实际的创建工作推到子类当中完成,只负责具体工厂子类必须实现的接口,这样就可以让系统在不修改具体工厂角色的情况下引进新的产品
写了一个非常简单的加法计算器,模拟工厂模式的实例
有一个抽象类,抽象方法是计算2数相加之和
public abstract class Operation {
private double num1;
private double num2;
public double getNum1() {
return num1;
}
public void setNum1(double num1) {
this.num1 = num1;
}
public double getNum2() {
return num2;
}
public void setNum2(double num2) {
this.num2 = num2;
}
public abstract double getResult();
}
定义一个工厂接口
public interface OperationFactory {
public Operation getOperation();
}
定义工厂接口的实现类
public class AddOperationFactory implements OperationFactory{
@Override
public Operation getOperation() {
return new AddOperation();
}
}
用一个具体类实现相加的抽象类
public class AddOperation extends Operation{
@Override
public double getResult() {
double result = this.getNum1()+this.getNum2();
return result;
}
}
用main方法测试
public class MainClass {
public static void main(String[] args) {
System.out.println("输入第一个数");
Scanner scanner = new Scanner(System.in);
String num1 = scanner.nextLine();
System.out.println("请输入操作符");
String oper = scanner.nextLine();
System.out.println("输入第二个数");
String num2 = scanner.nextLine();
double result = 0;
double doubleNum1 = Double.parseDouble(num1);
double doubleNum2 = Double.parseDouble(num2);
if ("+".equals(oper)) {
OperationFactory factory = new AddOperationFactory();
Operation operation = factory.getOperation();
operation.setNum1(doubleNum1);
operation.setNum2(doubleNum2);
result = operation.getResult();
}
System.out.println(num1+oper+num2+"="+result);
}
}
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- 常用 DOS 命令
- ANT初学入门之一:基本概念、安装与配置
- java中数据类型与包装类
- 项目经理必知必会的那些事儿
- 工厂模式
- 嵌入式系统之Y-Chart
- java集合初探之数据
- Chrome浏览器使用Ajax访问本地资源出错
- 手机号码、邮箱验证的正则表达式
- 代理相关记事
- 程序中的栈和数据结构中的栈区别与联系
- OC-类的复合
- Python标准库:内置函数getattr(object, name[, default])