简单工厂模式
2016-12-08 17:14
218 查看
前言,搞开发2年了,一直没法写出高质量的代码。对比别人写的代码,感觉自己还是在设计模式这块应用的不够灵活。利用年终事少,恶补一下。闲话不多说,下面先介绍下简单工厂模式。 阅读了《大话设计模式》第一章,介绍了简单工厂模式,不过是.net语言写的。个人觉得尽管对简单工厂的概念一知半解了,但是还是实际写一遍才会理解更加深刻。题目:实现一个计算器运算(+,-,*,/) //节省时间,借用下别人代码
相信大多数人没有考虑设计模式的人都会这样实现的,其实这是面向过程的一种思想,想到哪写到哪,可维护,可扩展性差。
(具体原因不多说,想具体了解去看看大话设计模式)
通过工厂模式实现如下:
(1)定义一个抽象类
(3)通过简单工厂类管理操作子类
(4)实例化操作类
double result = 0; // 1.接收控制台输入 System.out.println("-----计算器程序-----"); System.out.println("输入第一个操作数"); Scanner scan = new Scanner(System.in); String strNum1 = scan.nextLine(); System.out.println("输入运算符"); String oper = scan.nextLine(); System.out.println("输入第二个操作数"); String strNum2 = scan.nextLine(); // 2.进行运算 if ("+".equals(oper)) { result = Double.parseDouble(strNum1) + Double.parseDouble(strNum2); } else if ("-".equals(oper)) { result = Double.parseDouble(strNum1) - Double.parseDouble(strNum2); } else if ("*".equals(oper)) { result = Double.parseDouble(strNum1) * Double.parseDouble(strNum2); } else if ("/".equals(oper)) { result = Double.parseDouble(strNum1) / Double.parseDouble(strNum2); } System.out.println(strNum1 + oper + strNum2 + "=" + result);
相信大多数人没有考虑设计模式的人都会这样实现的,其实这是面向过程的一种思想,想到哪写到哪,可维护,可扩展性差。
(具体原因不多说,想具体了解去看看大话设计模式)
通过工厂模式实现如下:
(1)定义一个抽象类
/** * 实现面向对象业务封装 * * @author wgd * */ public abstract class IOperation { public abstract double getResult(); private double numberA, numberB; public double getNumberB() { return numberB; } public void setNumberB(double numberB) { this.numberB = numberB; } public double getNumberA() { return numberA; } public void setNumberA(double numberA) { this.numberA = numberA; } }(2)增加实现具体业务的操作子类,由于乘法和除法大同小异不过多介绍。
/** * 实现加法 * * @author wgd * */ public class AddOperation extends IOperation { @Override public double getResult() { return getNumberA() + getNumberB(); } }
/** * 实现减法 * * @author wgd * */ public class SubOpreation extends IOperation { @Override public double getResult() { return getNumberA() - getNumberB(); } }
(3)通过简单工厂类管理操作子类
/** * 简单工厂管理操作类 * @author wgd * */ public class FactoryOperation { public static IOperation createOperaton(String operate) { IOperation operation = null; switch (operate) { case "+": operation = new AddOperation(); break; case "-": operation = new SubOpreation(); break; default: break; } return operation; } }
(4)实例化操作类
public class ExampleTest { public static void main(String[] args) { double numberA = 3d, numberB = 5d, result = 0d; IOperation iOperation = FactoryOperation.createOperaton("-");// 简单工厂 iOperation.setNumberA(numberA); iOperation.setNumberB(numberB); result = iOperation.getResult(); System.out.println("result==" + result); } }
相关文章推荐
- 设计模式之-简单工厂、工厂方法、抽象工厂
- Dot Net 设计模式—简单工厂
- 简单工厂设计模式-设计模式(1)
- 单态模式(Singleton)简单工厂(Simple Factory)
- JAVA设计模式——简单工厂(Simple Factory)模式
- 简单工厂创立性模式介绍
- 简单工厂模式,抽象工厂模式,反射工厂模式的代码总结
- 阎宏:Java语言简单工厂创立性模式介绍
- 简单的工厂模式
- 小菜编程成长记(五 体会简单工厂模式的美妙)
- (4)简单工厂模式 — Simple Factory — 文物管理衙门 — 和申的经营之道第一部分
- C#设计模式之简单工厂篇
- 爪哇语言简单工厂创立性模式介绍
- 简单工厂设计模式-设计模式(1)
- 简单工厂模式(Simple Factory Pattern)
- 爪哇语言简单工厂创立性模式介绍
- zt:工厂模式-简单工厂(设计模式的入门级模式—初级)
- C#设计模式学习笔记---简单工厂模式
- 解析Petshop 3.0 简单工厂(Simple Factory)模式
- 简单工厂(Simple Factory)模式