Java设计者模式简单工厂模式解析

作者:http://www.cnblogs.com/jingmoxukong/p/4250277.html 时间:2023-02-07 14:02:54 

简介

简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。

简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例

简单工厂模式是一种对象创建型模式但是简单工厂模式不属于23种Gof设计模式之一。

实例

如何实现一个具有加减乘除基本功能的计算器?

对于这四种运算来说,都需要两个操作数,差别仅在于返回的结果不同。

由此,我们可以抽象化它们的共性,提炼出一个父类。这个类中包含两个操作数,一个返回结果方法,这个方法期望在子类中得以实现。

以下通过具体代码来说明。

Java设计者模式简单工厂模式解析

Product (Operation) : 产品角色,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口


// Product角色,所有实例所共有的公共接口
abstract class Operation {
 public int numA;
 public int numB;
 public abstract int GetResult();
}

ConcreteProduct组 : 具体产品角色,实现 Product 中的接口。


// ConcreteProduct 角色,实现 Product 中的接口
class Add extends Operation {
 @Override
 public int GetResult() {
   return numA + numB;
 }
}
//ConcreteProduct 角色,实现 Product 中的接口
class Sub extends Operation {
 @Override
 public int GetResult() {
   return numA - numB;
 }
}
//ConcreteProduct 角色,实现 Product 中的接口
class Mul extends Operation {
 @Override
 public int GetResult() {
   return numA * numB;
 }
}
//ConcreteProduct 角色,实现 Product 中的接口
class Div extends Operation {
 @Override
 public int GetResult() {
   if (numB == 0) {
     System.out.println("ERROR!");
     return -1;
   }
   return numA / numB;
 }
}

Factory (OperationFactory) : 工厂角色,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。


// 工厂角色,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑
class OperationFactory {
 public static Operation CreateOperation (char operate) {
   Operation oper = null;
   switch(operate) {
   case '+':
     oper = new Add();
     break;
   case '-':
     oper = new Sub();
     break;
   case '*':
     oper = new Mul();
     break;
   case '/':
     oper = new Div();
     break;
   default:
     break;
   }
   return oper;
 }
}

测试代码


public class SimpleFactoryPattern {
 public static void main(String[] args) {
   int numA = 10;
   int numB = 3;
   int result = 0;
   Operation oper = OperationFactory.CreateOperation('+');
   oper.numA = numA;
   oper.numB = numB;
   result = oper.GetResult();
   System.out.println(numA + " + " + numB + " = " + result);
 }
}

运行结果


10 + 3 = 13

要点

优点

简单工厂模式的工厂类是整个模式的关键。其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类的对象。

通过使用简单工厂模式,用户无需了解对象如何创建的,只要传入必要信息就可以了。

缺点

工厂类集中了所有实例的创建逻辑,违背了高内聚责任分配原则。

随着系统中具体产品类不断增多,势必要不断修改工厂类,不易维护和扩展。同时,这也违背了开放封闭原则。

来源:http://www.cnblogs.com/jingmoxukong/p/4250277.html

标签:java,设计模式
0
投稿

猜你喜欢

  • java中的this引用及对象构造初始化

    2023-03-07 09:38:17
  • android 开发教程之日历项目实践(二)

    2022-05-05 22:22:13
  • C语言实现扫雷游戏源代码

    2021-10-17 14:20:44
  • Java实现班级管理系统

    2022-05-08 07:29:48
  • Android基于AlarmManager实现用户在线心跳功能示例

    2021-12-02 20:26:46
  • java网络爬虫连接超时解决实例代码

    2022-02-02 06:57:28
  • 详解JavaWeb中的 Listener

    2023-09-04 08:09:24
  • Android模拟器实现手机添加文件到sd卡的方法

    2022-01-18 08:38:27
  • Android设备与外接U盘实现数据读取操作的示例

    2023-06-18 13:35:00
  • Android开启动画之渐隐渐现效果

    2021-07-21 08:45:28
  • Java8 Instant时间戳使用小记

    2023-05-31 10:33:59
  • Java annotation元注解原理实例解析

    2022-09-08 00:42:45
  • Java集合TreeSet用法详解

    2023-11-10 22:53:34
  • Spring Boot两种全局配置和两种注解的操作方法

    2022-06-07 01:14:42
  • Java编程在ICPC快速IO实现源码

    2021-10-18 01:41:54
  • Android自定义钟表特效

    2022-09-11 00:29:14
  • Spring Security安全框架之记住我功能

    2023-08-19 02:38:43
  • Java常用排序算法及性能测试集合

    2022-01-15 22:29:09
  • java操作json对象出现StackOverflow错误的问题及解决

    2023-03-04 20:06:14
  • C++类中的特殊成员函数示例详解

    2023-11-07 13:02:08
  • asp之家 软件编程 m.aspxhome.com