Java设计模式之工厂设计模式
工厂模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到了子类。
1、业务逻辑
1.1、父类Operation
package com.designmode.factory;
public abstract class Operation {
protected int numberA;
protected int numberB;
public void setValue(int numberA,int numberB){
this.numberA=numberA;
this.numberB=numberB;
}
public abstract int getResult();
}
1.2、加法类AddOperation
package com.designmode.factory;
public class AddOperation extends Operation {
@Override
public int getResult() {
// TODO Auto-generated method stub
return this.numberA+this.numberB;
}
}
1.3、减法类SubOperation
package com.designmode.factory;
public class SunOperation extends Operation {
@Override
public int getResult() {
// TODO Auto-generated method stub
return this.numberA-numberB;
}
}
1.4、工厂父类OperationFactory
package com.designmode.factory;
public interface OperationFactory {
/**
* 创建对象工程
* @param operate
* @return
*/
Operation createOperation(String operate);
}
1.5、生成加法运算对象工厂AddOperation
package com.designmode.factory;
public class AddFactory implements OperationFactory {
@Override
public Operation createOperation(String operate) {
// TODO Auto-generated method stub
return new AddOperation();
}
}
1.6、生成减法运算对象工厂SubOperation
package com.designmode.factory;
public class SubFactory implements OperationFactory {
@Override
public Operation createOperation(String operate) {
// TODO Auto-generated method stub
return new SunOperation();
}
}
2、页面逻辑
package com.designmode.factory;
import java.util.Scanner;
public class OperationTest {
@SuppressWarnings("resource")
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.print("请您输入第一个数字:");
int numberA = Integer.parseInt(reader.nextLine());
System.out.print("请您输入运算符:");
String operate = reader.nextLine();
System.out.print("请您输入第二个数字:");
int numberB = Integer.parseInt(reader.nextLine());
OperationFactory operationFactory = null;
switch (operate) {
case "+":
operationFactory = new AddFactory();
break;
case "-":
operationFactory = new SubFactory();
break;
default:
System.out.println("你输入错误,请重新输入!");
break;
}
Operation operation = operationFactory.createOperation(operate); // 生成运算对象
operation.setValue(numberA, numberB); // 设置numberA与numberB的值
int result = operation.getResult(); // 获取运算结果
System.out.println(numberA+operate+numberB+"="+result); // 打印运算结果
}
}
Java设计模式之工厂设计模式的更多相关文章
- php设计模式之工厂设计模式
概念: 工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类步骤. 很多高级模式都是依赖于工厂模式. 好处: PHP中能够创建基于变量内容 ...
- 设计模式--静态工厂设计模式在android中的使用
今天看到这篇文章:http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html public c ...
- Java设计模式之工厂模式(Factory)
前言: 前面学习了建造者设计模式,接下来学习一下Retrofit中使用的另外一个设计模式,工厂设计模式!!!里面采用工厂模式使得数据转换得到完全解耦,工厂模式的好处用到了极致,如此好的设计模式我们怎能 ...
- JAVA设计模式--抽象工厂模式
抽象工厂设计模式 1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用.来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):抽象工厂角色: 这是工厂方法模式的 ...
- 设计模式——抽象工厂模式及java实现
设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ...
- java 23 - 1 设计模式之工厂方法模式
转载: JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- [译]Java 设计模式之工厂
(文章翻译自Java Design Pattern: Factory) 1.Java工厂模式的来历 工厂设计模式用于创建基于不同参数的对象.下面的例子就是在一个工厂里创建一个人.如果我们向工厂要一个b ...
- java 设计模式之工厂模式与反射的结合
工厂模式: /** * @author Rollen-Holt 设计模式之 工厂模式 */ interface fruit{ public abstract void eat(); } ...
随机推荐
- 记录一些容易忘记的属性 -- UILabel
一:UILabel lbl.alpha=0.f; lbl 透明,会影响子视图的显示 lbl.backgroundColor=[UIColor clearColor]; lbl 背景色透明,子视图 ...
- iphone获取当前磁盘信息
获取iphone磁盘总大小.已使用空间.空闲空间 [代码]悦德财富:https://www.yuedecaifu.com 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- poj2193
//Accepted 368K 532MS //线性dp //dp[i][j]表示前i位最后一个是j的排列数 //dp[i][j]=sum(dp[i-1][h]) h*2<=j #include ...
- WIN中SharePoint Server 2010 入门安装部署详解
目前流行的原始安装文件基本都是这样的:Windows Server 2008 R2+SQL Server 2008R2+SharePoint Server 2010 这个初始环境原本也无可厚非 ...
- java获取获得Timestamp类型的当前系统时间。
java获取获得Timestamp类型的当前系统时间. java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = n ...
- hdu 2090
PS:输入麻烦...我还以为是输入一个就输出一个...后来看了大神的才知道....暴力破解了... 代码; #include "stdio.h" int main(){ ,a,b; ...
- method chaining
经常写Java的话,可能比较熟悉下面这种函数调用方式 object.method1().method2() 术语叫所谓的method chaining,在c++里面,为了支持这种调用格式,你必须保障函 ...
- BZOJ 2083 Intelligence test
用vector,二分. #include<iostream> #include<cstdio> #include<cstring> #include<algo ...
- 层次分析模型(AHP)及其MATLAB实现
今天用将近一天的时间学习了层次分析模型(AHP),主要参考了一份pdf,这个网站,和暨南大学章老师的课件,现写出一些自己总结的要点. 一.层次分析法的基本步骤: 角度一: 实际问题——分解——> ...
- CRM客户关系管理系统修改(十四)
修改的流程: