您的位置:首页 > 编程语言 > Java开发

《大话设计模式》java实现之简单工厂模式

2017-11-10 18:52 330 查看
《大话模式》这本书写得不错,可惜不是java版,现在有空,想着用java实现一下,写到哪算哪

UML图



代码结构图



public class Client {
public static void main(String[] args) {
Operation operation = OperationFactory.createOperation("+");
operation.setNumberA(1);
operation.setNumberB(2);
double result = operation.getResult();
System.out.println("result " + result);
}
}


public abstract class Operation {
private double numberA = 0;
private double numberB = 0;

public abstract double getResult();

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 class OperationAdd extends Operation {

@Override
public double getResult() {
return this.getNumberA() + this.getNumberB();
}

}


public class OperationFactory {

public static Operation createOperation(String operate) {
Operation operation = null;
switch (operate) {
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
default:
break;
}
return operation;
}

}


public class OperationSub extends Operation {

@Override
public double getResult() {
return getNumberA() - getNumberB();
}

}


书中还有乘法、除法,以及可以扩展的n次幂算法,这里省略,方便查看。

运行结果



个人总结:

1.UML图

在简单工厂中,OperationFactory和OperationAdd、OperationSub是依赖关系,而不是关联关系,原因如下:

1.1聚合关系、合成关系都属于关联关系(has-a),是特殊的关联关系,聚合关系时比较弱的“拥有”关系(如大雁与雁群),合成关系是比较强的“拥有”关系(如大雁与翅膀)

1.2依赖关系(user-a):A类的变化引起B类的变化,则B依赖于A,具体表现为在某个类的方法使用另一个类对象作为参数,如局部变量(关联关系是全局变量)、方法参数或静态方法调用

Driver类的drive(Car car)方法与Car类。

没想懂Client和OperationFactory为什么是关联关系???
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: