在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:

简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明:(转自这篇文章)

  就拿登录功能来说,假如应用系统需要支持多种登录方式如:口令认证、域认证(口令认证通常是去数据库中验证用户,而域认证则是需要到微软的域中验证用户)。那么自然的做法就是建立一个各种登录方式都适用的接口,如下图所示:

代码

interface Login {fun verify(name: String, password: String):Boolean
}

class DomainLogin : Login {override fun verify(name: String, password: String): Boolean {/*** do some work* */return true}
}

class PasswordLogin:Login {override fun verify(name: String, password: String): Boolean {/*** do some work* */return true}
}

我们还需要一个LoginManager,根据调用者不同的要求,创建出不同的登录对象并返回。如果有不合法的请求,返回一个Runtime exception

class LoginManager {  //静态方法companion object {fun factory(type: String): Login {when (type) {"domain" -> return DomainLogin()"password" -> return PasswordLogin()}throw RuntimeException("not found any type")}}
}

测试:

val login = LoginManager.factory("password")
val result = login.verify("name","password")
println("result: $result")

简单工厂模式的优点

  模式的核心是工厂类。这个类含有必要的逻辑判断,可以决定在什么时候创建哪一个登录验证类的实例,而调用者则可以免除直接创建对象的责任。简单工厂模式通过这种做法实现了对责任的分割,当系统引入新的登录方式的时候无需修改调用者。

简单工厂模式的缺点

  这个工厂类集中了所以的创建逻辑,当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中实现。什么时候它不能工作了,整个系统都会受到影响。

转载于:https://www.cnblogs.com/johnnyzhao/p/10404334.html

设计模式-简单工厂模式相关推荐

  1. JavaScript设计模式--简单工厂模式例子---XHR工厂

    JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...

  2. 三角形圆形创建与擦除java_设计模式---------------简单工厂模式

    设计模式---------------简单工厂模式 一.题目(Question) 使用简单工厂模式设计一个可以创建不同几何形状(如圆形.方形和三角形等)的绘图工具,每个几何图形都要有绘制draw()和 ...

  3. 设计模式—简单工厂模式

    前言 简单工厂模式是一种比较容易理解的设计模式 简单工厂模式介绍 在设计模式中,简单工厂模式可以理解为负责生产对象的一个类,当使用new 关键字创建一个对象时,此时该类就依赖于这个对象,也就是他们间的 ...

  4. 设计模式 - 简单工厂模式

    文章目录 设计模式 - 简单工厂模式 1.意图 2.实例 1.创建颜色接口 - 定义生产的产品是什么 2.创建颜色枚举 - 定义生产哪些类型的产品 3.根据颜色枚举创建产品 - 根据产品清单生产产品 ...

  5. 设计模式--简单工厂模式

    什么是工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对 ...

  6. C#设计模式--简单工厂模式

    设计模式: 简单工厂模式(Simple Factory Pattern) 介绍:简单工厂模式不是Gof23种设计模式之一.但它在实际的编程中经常被用到,而且思想也非常简单,下面简单举例说明: 简单工厂 ...

  7. C++设计模式--简单工厂模式

    概述 工厂模式:封装对象的实现.它可能是所有设计模式中最有用的模式之一了.这里要说的是简单工厂模式,又称为静态方法工厂模式,属于创建性模式.其原理就是通过传入的参数来判断应该创建什么对象. UML 类 ...

  8. 设计模式 简单工厂模式

    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...

  9. 面向对象编程设计模式--简单工厂模式讲解(历史上最简单明白的例子)

    工作之余,在看资料过程中发现一个极易理解的简单工厂模式的例子,自己亲自试练一番,感觉对这个设计模式不熟悉的朋友, 一看马上就知道是什么回事了. 简单工厂模式根据提供给它的数据,返回几个可能类中的一个类 ...

  10. java工厂模式 uml_深入浅出设计模式-简单工厂模式

    模式定义 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式定义了一个创建对象的类,由这个类来封装实例化 ...

最新文章

  1. Samtools(CentOS Linux)安装及常用命令详解
  2. 旋转矩阵与欧拉角之间的转换
  3. 16.编译错误Unknown CMake command “check_symbol_exists“解决
  4. 网站外链优化布局和新增技巧介绍!
  5. 面试问题整理笔记系列 一 Java容器类
  6. Briefings in Bioinformatics | 王秀杰/裴小兵合作开发单细胞组学细胞标记基因鉴定算法COSG...
  7. hashtable遍历
  8. 诺基亚7plus支持html,【诺基亚7Plus评测】外观:全面屏是最大亮点_诺基亚 7 Plus(4GB RAM/全网通)_手机评测-中关村在线...
  9. checksum命令 linux,Windows相当于linux cksum命令
  10. mysql_fetch_array详解
  11. Oracle case用法
  12. 39. 后台模块开发(4)
  13. 位图文件(BMP)格式以及Linux下C程序实现(转)
  14. Oracle 数据类型,表空间、用户与权限,DDL、DML 语句、约束,exp/imp
  15. 通过串口波特率计算bit时间
  16. python与排版设计欣赏_有哪些排版惊艳的建筑作品集?
  17. Matlab版本svm工具箱,matlab libsvm工具箱
  18. c语言四则运算去括号,四年级:四则运算交换律、结合律、分配律及去括号汇总...
  19. Python关键字查询
  20. 思科 Packet Tracer 实验六 路由协议基本配置

热门文章

  1. 环境图配置不存在pbr_小米11再曝光,硬件参数不存在短板,完全最高旗舰配置...
  2. 计算机教师资格证报考科目,还在纠结报考教师资格证该选哪个科目呢?看完这篇,你不再迷茫...
  3. 盛辉智能机器人安全吗_蓝小欧车载安全机器人构建全方位智能出行安全生态
  4. 安卓手机可以连接斑马系统吗_斑马郝飞:我们一定能在车载系统上打败安卓
  5. Pycharm回退操作+常用批量操作
  6. FPGA之道(35)Verilog中的并行与串行语句
  7. FPGA之道(19)以FPGA为核心的开发板制作
  8. Google AMP WebPackage 在 Webnovel 的应用
  9. Swoole笔记(五)
  10. 每天一个JavaScript实例-获取元素当前高度