java工厂模式 uml_简单工厂模式的UML类图与源码实现(转) | 学步园

简单工厂模式的UML图

0_1280584795Ax99.gif%20

源码:Operation类

Java代码 icon_copy.gif

packageOperation;

publicabstractclassOperation {

doublenumberA=0;

doublenumberB=0;

publicdoublegetNumberA() {

returnnumberA;

}

publicvoidsetNumberA(doublenumberA) {

this.numberA = numberA;

}

publicdoublegetNumberB() {

returnnumberB;

}

publicvoidsetNumberB(doublenumberB) {

this.numberB = numberB;

}

publicabstractdoubleoperate();

}

package Operation;

public abstract class Operation {

double numberA=0;

double numberB=0;

public double getNumberA() {

return numberA;

}

public void setNumberA(double numberA) {

this.numberA = numberA;

}

public double getNumberB() {

return numberB;

}

public void setNumberB(double numberB) {

this.numberB = numberB;

}

public abstract double operate();

}

加类:

Java代码 icon_copy.gif

packageOperation;

publicclassAddextendsOperation {

@Override

publicdoubleoperate() {

returnnumberA+numberB;

}

}

package Operation;

public class Add extends Operation {

@Override

public double operate() {

return numberA+numberB;

}

}

减类:

Java代码 icon_copy.gif

packageOperation;

publicclassSubextendsOperation {

@Override

publicdoubleoperate() {

returnnumberA-numberB;

}

}

package Operation;

public class Sub extends Operation {

@Override

public double operate() {

return numberA-numberB;

}

}

乘类:

Java代码 icon_copy.gif

packageOperation;

publicclassMulextendsOperation {

@Override

publicdoubleoperate() {

returnnumberA*numberB;

}

}

package Operation;

public class Mul extends Operation {

@Override

public double operate() {

return numberA*numberB;

}

}

除类:

Java代码 icon_copy.gif

packageOperation;

importjava.io.IOError;

publicclassDivextendsOperation {

@Override

publicdoubleoperate() {

try{

returnnumberA/numberB;

}catch(IOError e) {

System.out.println("除数不能为空!");

return0;

}

}

}

package Operation;

import java.io.IOError;

public class Div extends Operation {

@Override

public double operate() {

try {

return numberA/numberB;

} catch (IOError e) {

System.out.println("除数不能为空!");

return 0;

}

}

}

工厂类:

Java代码 icon_copy.gif

importOperation.Add;

importOperation.Div;

importOperation.Mul;

importOperation.Operation;

importOperation.Sub;

publicclassOperationFactory {

publicstaticOperation createOperation(charoperate){

Operation operation=null;

switch(operate) {

case'+':

operation=newAdd();

break;

case'-':

operation=newSub();

break;

case'*':

operation=newMul();

break;

case'/':

operation=newDiv();

break;

}

returnoperation;

}

}

import Operation.Add;

import Operation.Div;

import Operation.Mul;

import Operation.Operation;

import Operation.Sub;

public class OperationFactory {

public static Operation createOperation(char operate){

Operation operation=null;

switch (operate) {

case '+':

operation=new Add();

break;

case '-':

operation=new Sub();

break;

case '*':

operation=new Mul();

break;

case '/':

operation=new Div();

break;

}

return operation;

}

}

客户端:

Java代码 icon_copy.gif

importOperation.Operation;

publicclassClient {

publicstaticvoidmain(String[] args) {

Operation operation = OperationFactory.createOperation('*');

operation.setNumberA(12);

operation.setNumberB(6);

System.out.println(operation.operate());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值