java 简单工厂模式示例
来源:互联网 发布:mac 安装xcode 步骤 编辑:程序博客网 时间:2024/05/23 19:12
本文举一个简单的例子,用来说明工厂模式。(实现一个加减乘除的计算器)
抽象操作类 :
package nc.lws.factory;public abstract class AbstractOperation {private double number1;private double number2;public double getNumber1() {return number1;}public void setNumber1(double number1) {this.number1 = number1;}public double getNumber2() {return number2;}public void setNumber2(double number2) {this.number2 = number2;}public abstract double getResult();}加减乘除实现类
package nc.lws.factory;public class AddOperation extends AbstractOperation {@Overridepublic double getResult() {return this.getNumber1() + this.getNumber2();}}
package nc.lws.factory;public class SubOperation extends AbstractOperation {@Overridepublic double getResult() {return this.getNumber1() - this.getNumber2();}}
package nc.lws.factory;public class MutiOperation extends AbstractOperation {@Overridepublic double getResult() {return this.getNumber1() * this.getNumber2();}}
package nc.lws.factory;public class DivOperation extends AbstractOperation {@Overridepublic double getResult() {return this.getNumber1() / this.getNumber2();}}
操作标记类:
package nc.lws.factory;public enum OperationLabel {ADD,SUB,MUTI,DIV}
工厂类:
package nc.lws.factory;public class OperationFactory {public static AbstractOperation createOperation(OperationLabel operation) {AbstractOperation oper= null;switch(operation) {case ADD:oper = new AddOperation();break;case SUB:oper = new SubOperation();break;case MUTI:oper = new MutiOperation();break;case DIV:oper = new DivOperation();break;}return oper;}}客户端测试类:
package nc.lws.factory;public class ClientMain {/** * @param args */public static void main(String[] args) {AbstractOperation oper = null;//加法 oper = OperationFactory.createOperation(OperationLabel.ADD);oper.setNumber1(1);oper.setNumber2(2);System.out.println("add TEST----->" +oper.getResult());//减法 oper = OperationFactory.createOperation(OperationLabel.SUB);oper.setNumber1(1);oper.setNumber2(2);System.out.println("sub TEST----->" +oper.getResult());//乘法oper = OperationFactory.createOperation(OperationLabel.MUTI);oper.setNumber1(1);oper.setNumber2(2);System.out.println("muti TEST----->" +oper.getResult());//除法oper = OperationFactory.createOperation(OperationLabel.DIV);oper.setNumber1(1);oper.setNumber2(2);System.out.println("div TEST----->" +oper.getResult());}}
例子虽然简单,但体现了java的三大特性:封装,继承与多态。
封装:具体操作为各种操作类,客户端调用为客户端类
继承:具体操作继承了抽象操作类
多态:客户端通过调用工厂方法动态实例化各种具体操作,而具体操作类又自动向上转型为抽象操作类
0 0
- java 简单工厂模式示例
- 简单工厂模式 java示例
- JAVA设计模式示例-1 简单工厂
- 简单工厂模式示例
- 简单工厂和工厂方法模式Java示例
- java工厂模式示例
- 设计模式之简单工厂模式java示例
- Java单例模式与工厂模式简单示例代码
- java设计模式示例程序之 ——简单工厂、工厂方法、抽象工厂模式
- factory(工厂) 模式简单示例
- JAVA接口的应用及工厂模式的简单示例
- java 简单工厂模式、多态工厂、抽像工厂 讲解, 代码示例
- Java 简单工厂模式
- java 简单工厂模式
- 简单工厂模式--Java
- Java简单工厂模式
- Java简单工厂模式
- java简单工厂模式
- Servlet配置
- 温习设计模式2--simple factory
- 在Vagrant部署多个dea节点
- 在C/C++程序里打印调用栈信息
- Centos6.4安装flash插件
- java 简单工厂模式示例
- Cannot expand the COM+ list in the Component Services UI due to MSDTC service permission issue
- 使用Eclipse搭建php的debug开发环境
- FrameSize、WinSize、VisibleSize、VisibleOrigin概念理解
- SID Strings
- 修改windows7中文件的权限
- 数据结构树的相关概念
- ACE Strings
- Android异常:Launch error: Failed to connect to remote VM