从今天开始,小菜决定记录下来自己学习设计模式的过程,并总结每天所学内容记录在博客中。
以编写计算器程序为例,有+,-,*,/……很多种运算,因此需要if,else或switch,case进行判断,当有新的运算加入进来时改动会比较大,耦合度较大。
使用简单工厂模式:
class Operation
{
private numA;
private numB;
public void GetResult();
}
class OperationAdd/Sub/Mul/Div extends Operation
{
public void GetResult()
{
……
}
}
class OperationFactory
{
public Operation createOperate(String operator)
{
Operation oper=null;
switch(operator)
{
case “+”: oper=new OperationAdd();
……
}
return oper;
}
}
客户端代码
{
Operation oper;
oper=OperationFactory.createOperate(“+”);
oper.setNumA(1.2); oper.setNumB(7.5);
oper.GetResult();
}
UML类图:常见类间的关系:继承;关联;聚合;合成;依赖
几种情况的类图和代码形式如下