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(); } ...
随机推荐
- JDBC体会
1.把mysql-connector XXXX版本导入buildpath 2.通过DriverManager 的getConnection 方法获得一个Connnection引用,方法的参数是 url ...
- jQuery 操作CSS
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- javascript 变量声明有var与无var 的区别
1.在函数作用域内 加var定义的变量是局部变量,不加var定义的就成了全局变量.使用var定义var a = 'hello World';function bb(){var a = 'hello B ...
- MySQL中like的使用方法
Like的运用场合主要在模糊查询的时候,一般以查询字符串居多,这里据一些例子来说他的一般用法: <1>查询name字段中包含有“明”字的:例 select * from table1 wh ...
- HttpClient -- 血的教训
HttpClient -- 血的教训 千万别用httpClient 不支持httpVersion2.0 因为这个导致项目重做
- hdu 2068
ps:长度长到我不想说....WA了无数次...25的阶乘就爆炸... 代码: #include "stdio.h" #define LL long long LL fac(lon ...
- hdu 2049
Ps:WA了无限次...简直做到崩溃..高中学的知识都忘了....这道题就是跟2048差不多.. 从N个人里选M个人,有Cmn种选法,然后就是M的错排*Cnm 代码: #include "s ...
- 2016-1-6第一个完整APP 私人通讯录的实现 4:编辑联系人
一:建立编辑联系人的controller,并使其拥有模型contact,且有协议.代码如下 #import <UIKit/UIKit.h> #import "contact.h& ...
- 数据结构 《6》----堆 ( Heap )
Practival Problems: a. Construct a Huffman code b. Compute the sum of a large set of floating point ...
- My_Python的常用函数.
范围生成函数 class range(object) | range(stop) -> range object | range(start, stop[, step]) -> range ...