模式一:简单工厂模式
简单工厂模式体现了面向对象的多态和继承的思想,降低了程序间的耦合程度,便于日后的功能扩展。
本实例实现了一个加减乘除计算器的后台程序,类图如下:
//Operation类定义模板
package 设计模式;
public class Operation {
float num1;
float num2;
public float getNum1() {
return num1;
}
public void setNum1(float num1) {
this.num1 = num1;
}
public float getNum2() {
return num2;
}
public void setNum2(float num2) {
this.num2 = num2;
}
public float getResult(){
float result=0;
return result;
}
}
以下加减乘除四个类分别继承Operation,//加法类
package 设计模式;
public class Add extends Operation {
@Override
public float getResult() {
System.out.println(num1+"----"+num2);
return num1+num2;
}
}
//减法类
package 设计模式;
public class Subtract extends Operation {
@Override
public float getResult() {
// TODO Auto-generated method stub
return num1-num2;
}
}
//乘法类
package 设计模式;
public class Mutiply extends Operation {
@Override
public float getResult() {
return num1*num2;
}
}
//除法类
package 设计模式;
public class Divide extends Operation {
@Override
public float getResult() {
try{
return num1/num2;
}catch(Exception e){
System.out.println("除数不能为0.");
}
return 0.0f;
}
}
下面为代理类,注代理类返回对象为Operation对象,但每个对象根据操作符进行实例化。package 设计模式;
public class Factory {
public Operation creatOperation(char operate){
Operation oper=null;
switch(operate){
case '+':
oper=new Add();
break;
case '-':
oper=new Subtract();
break;
}
return oper;
}
}
主程序:
package 设计模式;
public class Client {
public static void main(String[] args) {
Operation oper=new Factory().creatOperation('+');
oper.setNum1(22.2f);
oper.setNum2(32.3f);
System.out.println(oper.getResult());
}
}
总结:简单工厂模式通过继承实现子类的多态,可以方便的进行模块增加删除操作。加入需要添加开方运算时只需要添加一个继承了Operation的子类,然后在代理中增加case语句即可。