简单工厂模式
说先说一下我们熟悉的23中设计模式划分:
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
其实还有两类:并发型模式和线程池模式。
今天只要是针对简单工厂模式给大家讲解一下。直接例子上。
问题:请用C++,java,c#。vb任意一种面向对象语言实现一个计算器控制台程序。要求输入两个数和运算符号。得出结果。
这种问题大家应该都差不多都会。但是今天主要讲解,这个简单工厂模式的开发使用。
package com.hs.huojg;
import java.io.Serializable;
public class OperationEntity implements Serializable{
private Double numberA;//第一个数
private Double numberB;//第二个数
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 Double GetResult(){
double result=0d;
return result;
}
}
大家看到上面代码的含义了。不错,就是先定义两个数出来。有人会问,为什么要这样定义呢。最后再给大家讲。先看代码。
package com.hs.huojg; /** * 简单运算工厂类 * * 只需要输入运算符,工厂就会自动找到自己的对象实例化 * 通过多态,返回父类的方式来实现计算器的结果。 * * */ public class operactionFactory { public static OperationEntity createOperation(String operation){ OperationEntity oper=null; switch (operation) { case "+": oper= new operationAdd(); break; case "-": oper= new operationSub(); break; case "*": oper= new operationMul(); break; case "/": oper= new operationDiv(); break; default: break; } return oper; } }
哈哈哈哈。。。这一段代码如果你看懂了。那么这个简单工厂模式你就算,会简单应用了哦!
下面继续代码走起。
好
package com.hs.huojg; /** * 加法类 * * */ public class operationAdd extends OperationEntity{ @Override public Double GetResult(){ double result=0d; result=getNumberA()+getNumberB(); return result; } }
package com.hs.huojg;
public class operationDiv extends OperationEntity{
@Override
public Double GetResult(){
double result=0d;
if(getNumberB()!=0){
result=getNumberA()/getNumberB();
}else{
result= Double.parseDouble("不能被除");
}
return result;
}
}
package com.hs.huojg;
public class operationMul extends OperationEntity {
@Override
public Double GetResult(){
double result=0d;
result=getNumberA()*getNumberB();
return result;
}
}
package com.hs.huojg;
public class operationSub extends OperationEntity{
@Override
public Double GetResult(){
double result=0d;
result=getNumberA()-getNumberB();
return result;
}
}
代码完毕
最后再来个测试:
package com.hs.huojg; public class FactoryTest { public static void main(String args[]){ OperationEntity oper=new OperationEntity(); oper=operactionFactory.createOperation("*"); oper.setNumberA(4d); oper.setNumberB(5d); Double redult=oper.GetResult(); System.out.println(redult); } }
总结:以上代码就是用简单工厂模式开发出来的,计算器。这么简单的代码,有什么难理解的嘛? 相比大家从代码中就会知道。什么是简单工厂模式。不错。简单工厂模式就是实例化对象的。就这么简单。以上代码注重点:第一:对象初始化的条件。第二回调结果。
如果大家感觉以上设计有什么缺陷请加。499749405群进行交流。让我们一起成长。