在工厂模式
2015-12-09 19:08
351 查看
一个简单的计算器的例子来形容叙事工厂模式
Operator公共接口
package com.iss.factory;
public interface Operator {
public int getResult(int x, int y);
}
Add.java
package com.iss.factory;
public class Add implements Operator{
@Override
public int getResult(int x, int y) {
// TODO Auto-generated method stub
return x+y;
}
}
Minus.java
package com.iss.factory;
public class Minus implements Operator{
@Override
public int getResult(int x, int y) {
// TODO Auto-generated method stub
return x-y;
}
}
Mul.java
package com.iss.factory;
public class Mul implements Operator{
@Override
public int getResult(int x, int y) {
// TODO Auto-generated method stub
return x*y;
}
}
Divide.java
package com.iss.factory;
public class Divide implements Operator {
@Override
public int getResult(int x, int y) {
// TODO Auto-generated method stub
return x/y;
}
}
OperatorFactory.class
package com.iss.factory;
public class OperatorFactory {
private static Operator operator = null;
public static Operator getOperator(String op) {
if (op == "+") {
operator = new Add();
} else if (op == "-") {
operator = new Minus();
} else if (op == "*") {
operator = new Mul();
} else if (op == "/") {
operator = new Divide();
} else {
return null;
}
return operator;
}
}
Test.java
package com.iss.factory;
public class Test {
public static void main(String[] args) {
Operator operator = OperatorFactory.getOperator("+");
System.out.println(operator.getResult(10, 20));
}
}
总结一下:这一事实的主要优点是面向对象的多态性此功能的工厂模式。当程序的实际执行情况将有多个选择状态!
Operator公共接口
package com.iss.factory;
public interface Operator {
public int getResult(int x, int y);
}
Add.java
package com.iss.factory;
public class Add implements Operator{
@Override
public int getResult(int x, int y) {
// TODO Auto-generated method stub
return x+y;
}
}
Minus.java
package com.iss.factory;
public class Minus implements Operator{
@Override
public int getResult(int x, int y) {
// TODO Auto-generated method stub
return x-y;
}
}
Mul.java
package com.iss.factory;
public class Mul implements Operator{
@Override
public int getResult(int x, int y) {
// TODO Auto-generated method stub
return x*y;
}
}
Divide.java
package com.iss.factory;
public class Divide implements Operator {
@Override
public int getResult(int x, int y) {
// TODO Auto-generated method stub
return x/y;
}
}
OperatorFactory.class
package com.iss.factory;
public class OperatorFactory {
private static Operator operator = null;
public static Operator getOperator(String op) {
if (op == "+") {
operator = new Add();
} else if (op == "-") {
operator = new Minus();
} else if (op == "*") {
operator = new Mul();
} else if (op == "/") {
operator = new Divide();
} else {
return null;
}
return operator;
}
}
Test.java
package com.iss.factory;
public class Test {
public static void main(String[] args) {
Operator operator = OperatorFactory.getOperator("+");
System.out.println(operator.getResult(10, 20));
}
}
总结一下:这一事实的主要优点是面向对象的多态性此功能的工厂模式。当程序的实际执行情况将有多个选择状态!
相关文章推荐
- git重新设置ssh key后出现的认证问题解决方法
- bp神经网络及matlab实现
- YUM源的配置
- 开启ZIGBEE中双串口的方法
- Mysql之主从复制
- 公司初创时期的技术路线系列--5.webx3框架的使用
- 公司初创时期的技术路线系列--6.mysql安装与配置
- BZOJ1082: [SCOI2005]栅栏
- 有容乃大:楚庄王(第二篇
- LaTeX 设置字体颜色
- JAVA Hibernate工作原理及为什么要用
- POJ 3580 SuperMemo splay 翻转 右移
- LaTeX 设置字体颜色
- CMake with Win&MinGW
- oracle 10g(服务端+客户端,支持win7、win8) 资源分享
- iOS-开发者相关的几种证书
- ZOJ1610_Count the Colors(段树/为段更新)
- python splinter chromedriver下载地址(国内可用)
- CodeForces 19D Points
- zookeeper3.4.6集群安装