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(); } ...
随机推荐
- Hadoop 重启各个节点
对于datanode可以在master中配置,然后在maste启动的时候,一并去启动这些节点 .对于死掉的节点,也可以通过以下命令启动 .重启挂掉的节点进入到 挂掉的机器 bin/hadoop-dae ...
- 使用WebClient Post方式模拟上传文件和数据
假如某网站有个表单,例如(url: http://localhost/login.aspx):帐号 密码 我们需要在程序中提交数据到这个表单,对于这种表单,我们可以使用 WebClient.Uplo ...
- EF学习笔记(一)
EF(EntityFramwork)实体框架:主要是将实体类(EntityClass)和数据表(Table)进行映射(Map). EF核心对象: DbContext (数据访问核心对象) ...
- malloc,vmalloc与kmalloc,kfree与vfree的区别和联系
kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续kmalloc能分配的大小有 ...
- Note_Master-Detail Application(iOS template)_01_YJYAppDelegate.h
//YJYAppDelegate.h #import <UIKit/UIKit.h> @interface YJYAppDelegate : UIResponder <UIAppli ...
- php大力力 [026节] php开发状态要随时做好整理工作
php大力力 [026节] php开发状态要随时做好整理工作: 1.整理了开发目录,以及文件命名: 2.做了各个页面的快捷方式: 3.把浏览器safari的很多没来得及消化的页面链接,写入了我的在线 ...
- php大力力 [014节] 八杆子打不着的非技术文章,哈哈
今天似乎是个值得纪念的日子 一个创业失败者的忠告:请不要再参加创业活动 PHP mysql_connect() 函数 mysql默认用户 随意发几个链接,没任何意义
- HDOJ-三部曲一(搜索、数学)- A Knight's Journey
A Knight's Journey Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ...
- Java 集合深入理解(3):Collection
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情有点粉,来学学 Collection 吧! 什么是集合? 集合,或者叫容器,是一个包含多个元素的对象: 集合可以对 ...
- JS获取年月日
<script language="javascript"> var myDate = new Date(); myDate.getYear(); //获取当前年份(2 ...