简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
利用简单工厂模式设计一个计算器。
1:创建一个运算的类
package EasyFactoryModel; abstract class Operation { public double num1=0; public double num2=0; public double getNum1() { return num1; } public void setNum1(double num1) { this.num1 = num1; } public double getNum2() { return num2; } public void setNum2(double num2) { this.num2 = num2; } public abstract double getResult(); }
2:创建一个加法类。
class OpeartionAdd extends Operation { public double getResult(){ double result=0; result=num1+num2; return result; } }
3:创建一个减法类。
public class OpeartionSub extends Operation { public double getResult(){ double result=0; result=num1-num2; return result; } }
4:创建一个乘法类。
public class OperationMul extends Operation { public double getResult(){ double result=0; result=num1*num2; return result; } }
5:创建一个除法类。
public class OperationDiv extends Operation { public double getResult(){ double result=0; result=num1/num2; return result; } }
6:基本运算类做完之后,会发现,需要根据需要的加减乘除来实例化不同的类,此事,就需要 工厂类。
public class OperationFactory { public static Operation creatOpera(String operation){ Operation oper=null; switch(operation){ case "+":oper=new OpeartionAdd();break; case "-":oper=new OpeartionSub();break; case "*":oper=new OperationMul();break; case "/":oper=new OperationDiv();break; } return oper; } }
工厂类根据不同的操作来创建不同的对象,这里是多态的使用。
7:测试类
public class Calculator { public static void main(String[] args) { Operation oper; String operation="+"; oper=OperationFactory.creatOpera(operation); oper.num1=1; oper.num2=2; double result=0; result=oper.getResult(); System.out.println("result="+result); } }
8:控制台输出:
result=3.0
优点:简单工厂类是整个模式的关键,其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类对象,
通过实现简单工厂模式,用户无需了解对象是如何创建的,只要传入必要的信息即可。
缺点:工厂类集中了所有实例的创建逻辑,违背了高内聚分配原则。
随着系统中具体产品类不断增多,势必要不断修改工厂类,不易维护和扩展。同时也违背了开放封闭原则。
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整