一、简单工厂模式
1、起因
最近在看一本大话设计模式一书,感觉上面讲述的富有故事性,引导你一步一步的走进设计模式的世界。首先我先看到的是简单工厂模式,对此我想给自己做一个总结,给自己做一个提示。
2、代码
简单介绍一下功能:用面向对象的思想做一个简单的计算器,实现的方式自己选择。
首先这是一个用到了面向对象的思想,我们知道面向对象的设计思想就是:封装、继承、多态。这样做的好处就是为了程序的扩展性和代码复用性。可以实现松耦合。
(1)下面是运算抽象类,和继承它的子类(加法,减法,乘法,除法)
/** * 运算抽象类 * @author lixiaochao * */ public abstract class Operation { protected double _numberA = 0; protected double _numberB = 0; public double get_numberA() { return _numberA; } public void set_numberA(double _numberA) { this._numberA = _numberA; } public double get_numberB() { return _numberB; } public void set_numberB(double _numberB) { this._numberB = _numberB; } public double getResult(){ double result = 0; return result; } } /** * 加法运算 * @author lixiaochao * */ class OperationAdd extends Operation{ public double getResult(){ return _numberA + _numberB; } } /** * 减法运算 * @author lixiaochao * */ class OperationSub extends Operation{ public double getResult(){ return _numberA - _numberB; } } /** * 乘法运算 * @author lixiaochao */ class OperationMul extends Operation{ public double getResult(){ return _numberA * _numberB; } } /** * 除法运算 * @author lixiaochao * */ class OperationDiv extends Operation{ public double getResult(){ if(_numberB == 0){ throw new RuntimeException("被除数不能为0"); } return _numberA / _numberB; } }
(3)下面是简单工厂的实现类。
/** * 简单工厂模式 * @author lixiaochao * */ public class OperationFactory { public static Operation createOperation(String operate){ Operation oper = null; switch(operate){ case "+" : oper = new OperationAdd();break; case "-" : oper = new OperationSub();break; case "*" : oper = new OperationMul();break; case "/" : oper = new OperationDiv();break; } return oper; } }
(4)简单工厂的测试方法
/** * 简单工厂模式测试 * @author lixiaochao * */ public class SimpleFactoryTest { public static void main(String[] args) { Operation oper ; String operate = "*"; oper = OperationFactory.createOperation(operate); oper.set_numberA(8); oper.set_numberB(2); double result = oper.getResult(); System.out.println(oper.get_numberA() +operate+oper.get_numberB()+" 的结果是:"+result); } }
(3)结果是:
3、总结
简单工厂方法:个人理解为由工厂方法代理根据要求生成我们所需要的对象。这样有利于代码的复用性和可扩展性。
4、简单记录,方便记忆。做事细心,方无愧我心。不足之处,还望大神指点。