简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。

简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

以下是简单工厂UML模型:


那么简单工厂模式是在什么场景下使用呢。以下就以本人的理解举例说明:

  就拿登录功能来说。假如应用系统须要支持多种登录方式如:手机认证、邮箱认证、username登录。那么自然的做法就是建立一个各种登录方式都适用的接口。

定义登录接口:

package com.simple.factory;/*** 登录接口* */
public interface Login {public boolean login(String name, String password);
}

手机号码登录:

package com.simple.factory;public class PhoneNumberLogin implements Login {@Overridepublic boolean login(String name, String password) {// 登录处理逻辑if (password.equals("123123")) {return true;} else {return false;}}
}

邮箱登录:

package com.simple.factory;/*** 邮箱登录* */
public class EmailLogin implements Login {@Overridepublic boolean login(String name, String password) {// 登录处理逻辑if (password.equals("123123")) {return true;} else {return false;}}
}

username登录:

package com.simple.factory;public class UserNameLogin implements Login {@Overridepublic boolean login(String name, String password) {// 登录处理逻辑if (password.equals("123123")) {return true;} else {return false;}}
}

静态工厂核心类:

package com.simple.factory;/*** 静态工厂核心类* */
public class LoginManager {public static Login factory(String type) {if (type.equals("Email")) {return new EmailLogin();}if (type.equals("PhoneNumber")) {return new PhoneNumberLogin();}if (type.equals(type.equals("UserName"))) {return new UserNameLogin();}return null;}
}

測试client:

package com.simple.factory;/*** 測试client* */
public class Client {public static void main(String[] args) {String mLoginType = "PhoneNumber";String name = "dashu";String password = "123123";Login login = LoginManager.factory(mLoginType);boolean bool = login.login(name, password);if (bool) {System.out.println("登录成功");} else {System.out.println("登录失败");}}
}

简单工厂模式的长处

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

简单工厂模式的缺点

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

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

  1. 轻松看懂java设计模式简单工厂模式

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

  2. Java设计模式 -- 简单工厂模式(SimpleFactory)

    一.什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 二.模式中包含的角色及其职责 1.工厂(C ...

  3. java设计模式--简单工厂模式

    1.概念:建立一个工厂(一个函数或一个类方法)来制造新的对象,简单工厂模式静态工厂方法模式,存在的目的很简单:定义一个用于创建对象的接口. (注意点:简单工厂模式的方法是静态的) 2.组成: 1) 工 ...

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

    简单工厂模式     简单工程模式又称静态工厂方法,它的核心是类中包含一个静态方法,该方法用于根据参数来决定返回实现    同一接口不同类的实例. public class SimpleFactory ...

  5. Java——设计模式(简单工厂模式)

    * A:简单工厂模式概述* 简单工厂模式又叫静态工厂方法模式,它定义了一个具体的工厂类负责创建一些类的实例* B:优点* 客户端不需要再负责对象的创建,从而明确了各个类的职责* 简单来说,客户端你只需 ...

  6. java设计模式-简单工厂模式

    1.实例化对象不需要new,用工厂模式 2.工厂模式分为(简单工厂模式,工厂方法模式,抽象工厂模式) package com.wuming.factory.simple;public interfac ...

  7. Java设计模式之 工厂模式(简单工厂模式)

    前一阵子学习了Java 中据说是最简单的设计模式的 单例模式,想一起讨论学习的小伙伴请点击这里: Java 设计模式之单例模式 那么今天就把学习的工厂模式记录下来 工厂模式: 实现了创建者和调用者的分 ...

  8. Java设计模式(工厂模式>抽象工厂模式和原型模式)

    Java设计模式Ⅱ 1.工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 2.抽象工厂模式 3.总结 4.原型模式 4.1 原型模式 4.2 浅拷贝 4.3 深拷贝 5.建造者模式 1.工厂模式 ...

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

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

最新文章

  1. 《微信公众平台应用开发实战(第2版)》一导读
  2. handler.post(r)同一个线程的疑惑
  3. Markdown学习测试
  4. python【接上篇】
  5. 强制生成32位arm程序_3. 从0开始学ARM-ARM模式、寄存器、流水线
  6. orm的理解_ORM仇恨者无法理解
  7. 基本算法研究1-冒泡排序算法测试
  8. 前端工程师应该达到什么水平,找工作薪资才比较高?
  9. 19-数据持久化-Bind Mounting
  10. 如何在Windows11和Windows10上获取驱动程序更新
  11. iOS - UIControl
  12. java中io各种流的关闭顺序
  13. 新手如何免费开始学习阿里云ECS云服务器?
  14. matlab怎么画两个自变量的图_横道图怎么画?免费使用的项目管理软件
  15. 解决allegro 中OUT OF DATE SHAPES问题
  16. irr java_java-irr: java版的IRR和XIRR,通过牛顿算法实现内部收益率的计算
  17. 动态代理之Waiter案例
  18. Resnet网络介绍
  19. 坚果云企业版服务器端,坚果云团队版和企业版的区别
  20. 计算机网络(思科)章节测试总结

热门文章

  1. svn 导入的 web项目怎么变成了java项目了
  2. #define typedef 枚举类型
  3. 分享一份 sublime 的个人配置文件
  4. 数据仓库专题19-数据建模语言Information Engineering - IE模型(转载)
  5. 虚拟机安装centos7后无法联网
  6. MVC3.0 中Razor 学习
  7. 在RHEL5下构建Nessus漏洞检测系统
  8. Flex中让Panel等容器可拖动
  9. 【翻译】使用PowerShell获取网站运行时数据
  10. ISCW实验8:配置Cisco与Windows进行IPSec通信