工厂模式(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设计模式之工厂设计模式的更多相关文章

  1. php设计模式之工厂设计模式

    概念:        工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类步骤. 很多高级模式都是依赖于工厂模式. 好处:         PHP中能够创建基于变量内容 ...

  2. 设计模式--静态工厂设计模式在android中的使用

    今天看到这篇文章:http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html public c ...

  3. Java设计模式之工厂模式(Factory)

    前言: 前面学习了建造者设计模式,接下来学习一下Retrofit中使用的另外一个设计模式,工厂设计模式!!!里面采用工厂模式使得数据转换得到完全解耦,工厂模式的好处用到了极致,如此好的设计模式我们怎能 ...

  4. JAVA设计模式--抽象工厂模式

    抽象工厂设计模式 1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用.来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):抽象工厂角色: 这是工厂方法模式的 ...

  5. 设计模式——抽象工厂模式及java实现

    设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ...

  6. java 23 - 1 设计模式之工厂方法模式

    转载: JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

  7. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

  8. [译]Java 设计模式之工厂

    (文章翻译自Java Design Pattern: Factory) 1.Java工厂模式的来历 工厂设计模式用于创建基于不同参数的对象.下面的例子就是在一个工厂里创建一个人.如果我们向工厂要一个b ...

  9. java 设计模式之工厂模式与反射的结合

    工厂模式: /**  * @author Rollen-Holt 设计模式之 工厂模式  */   interface fruit{     public abstract void eat(); } ...

随机推荐

  1. 记录一些容易忘记的属性 -- UILabel

    一:UILabel lbl.alpha=0.f;    lbl 透明,会影响子视图的显示 lbl.backgroundColor=[UIColor clearColor]; lbl 背景色透明,子视图 ...

  2. iphone获取当前磁盘信息

    获取iphone磁盘总大小.已使用空间.空闲空间 [代码]悦德财富:https://www.yuedecaifu.com 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  3. poj2193

    //Accepted 368K 532MS //线性dp //dp[i][j]表示前i位最后一个是j的排列数 //dp[i][j]=sum(dp[i-1][h]) h*2<=j #include ...

  4. WIN中SharePoint Server 2010 入门安装部署详解

    目前流行的原始安装文件基本都是这样的:Windows Server 2008 R2+SQL Server 2008R2+SharePoint Server 2010     这个初始环境原本也无可厚非 ...

  5. java获取获得Timestamp类型的当前系统时间。

    java获取获得Timestamp类型的当前系统时间.   java获取取得Timestamp类型的当前系统时间 格式:2010-11-04 16:19:42 方法1: Timestamp d = n ...

  6. hdu 2090

    PS:输入麻烦...我还以为是输入一个就输出一个...后来看了大神的才知道....暴力破解了... 代码; #include "stdio.h" int main(){ ,a,b; ...

  7. method chaining

    经常写Java的话,可能比较熟悉下面这种函数调用方式 object.method1().method2() 术语叫所谓的method chaining,在c++里面,为了支持这种调用格式,你必须保障函 ...

  8. BZOJ 2083 Intelligence test

    用vector,二分. #include<iostream> #include<cstdio> #include<cstring> #include<algo ...

  9. 层次分析模型(AHP)及其MATLAB实现

    今天用将近一天的时间学习了层次分析模型(AHP),主要参考了一份pdf,这个网站,和暨南大学章老师的课件,现写出一些自己总结的要点. 一.层次分析法的基本步骤: 角度一: 实际问题——分解——> ...

  10. CRM客户关系管理系统修改(十四)

    修改的流程: