工厂模式,首先看下Wikipedia的描述

Factory Pattern is "A factory is an object for creating other objects". Simple Factory Pattern is a Factory class in its simplest form (In comparison to Factory Method Pattern or Abstract Factory Pattern). In another way, we can say: In simple factory pattern, we have a factory class which has a method that returns different types of object based on given input.

简单翻译一下,工厂模式是“工厂是一个用于生成其他对象的对象”,简单工厂模式是一个最简单的工厂类(Factory)(与工厂方法模式,和抽象工厂模式相比)。换句话说在简单工厂模式中,我们有一个工厂类,里面有一个方法用于根据不同的输入返回不同类型的对象。直观的理解就是这样Factory.getObject(ObjectType),根据参数类型获取对应的对象。

这里我们主要讨论的问题是为什么需要使用简单工厂模式,而不是直接new一个实例就完了。这里有以下几个方面的考虑。

1、方便客户端调用,调用端可能不需要参与创建的过程。简洁明了,同时也起到了保护内部创建过程的作用。

2、集中管理这些需要创建的对象,这些对象可能有严格的生命周期控制,这样就可以做到集中管理这些生成的对象。

3、从可维护性的角度来说,如果调用者过多的介入了生成过程,那么当需要修改的时候,就会出现较多的地方需要维护,这样项目的可维护性就变差了,使用简单工厂模式就使得项目更加容易维护。如果具体的实现类变更了,外界不需要感知内部的变化。只需要内部变更即可。

public class Test {public static void main(String[] args){IShape shape = ShapeFactory.getShape(EnumShape.Circle);shape.shape();}
}
public class ShapeFactory {public static IShape getShape(EnumShape enumShape){IShape shape  = null;switch (enumShape){case Circle:shape = new CircleShape();break;case Trangle:shape = new TrangleShape();break;}return shape;}
}
/**
 * 图形接口
 */
public interface IShape {void shape();
}
public class CircleShape implements IShape{@Override
    public void shape() {System.out.println("it is CircleShape");}
}
public class TrangleShape implements  IShape{@Override
    public void shape() {System.out.println(" It is trangle");}
}
public enum EnumShape {Circle,Trangle
}



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

  1. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  2. C#设计模式(2)——简单工厂模式

    一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂 ...

  3. php的类图怎么生成_PHP设计模式之简单工厂模式

    PHP设计模式之简单工厂模式 先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式.毫无疑问,工厂相关的几种模式在设计模式中是最出名的也是应用比较广泛的一种模式. ...

  4. 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)

    简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1  场景问题 ...

  5. .NET设计模式(1): 简单工厂模式

    .NET设计模式(1): 简单工厂模式 最近一直在看设计模式,想把自己的学习笔记与大家分享一下,如果能帮助大家的话,我会非常高兴,同时也欢迎大家指出里面的不足.园子里其实关于此类文章已经很多了,如果d ...

  6. JS常用的设计模式(2)——简单工厂模式

    JS常用的设计模式(2)--简单工厂模式 简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定 ...

  7. 设计模式之简单工厂模式(C#版)

    设计模式之简单工厂模式(C#版) 简介 假设有个女朋友 总结 简介 我用最简洁而直接的方式来描述一下,什么是简单工厂模式.一句话就是,工厂类使用switch case语句返回特定类型. 下面,我们用一 ...

  8. 大牧絮叨设计模式:简单工厂模式

    文章目录 1. 简单工厂模式概述 1.1.简单工厂模式核心组件 1.2.简单工厂模式优缺点 2.` Java`实现 公共父类定义 产品具体实现类 简单工厂定义 代码运行测试: 3. `Python`实 ...

  9. 设计模式之简单工厂模式(Java 实现)

    设计模式之简单工厂模式(Java 实现) 本文首发于http://www.imooc.com/wiki/Designlesson/factory.html 简单工厂模式是平时开发过程中最常见的设计模式 ...

最新文章

  1. 智能车竞赛中的车模足底按摩
  2. C# “不支持给定路径的格式”异常处理
  3. AI+5G:2019.03.31第11届中国(深圳)IT领袖峰会【IT新未来: 5G与人工智能】内容概要
  4. SAP Spartacus的navigation初始化
  5. 连接数据库是显示无法连接到服务器,如何解决出现无法与数据库服务器建立连接的方法...
  6. XML文件中url路径中失效解决办法
  7. Web设计师须知的10项SEO技巧
  8. 2015 11月9日 一周工作计划与执行
  9. Android成企业安全主要威胁的十大原因
  10. 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
  11. iptv服务器维护中,iptv升级服务器地址
  12. Windows 7 Sp1 x64 安装英文语言包
  13. LIMS实验室系统无纸化管理给实验室带来的帮助
  14. java生成树形Excel_java poi导出树形结构到excel文件
  15. 【递归入门】组合的输出
  16. 使用EasyExcel实现excel的简单读写操作
  17. 网络安全kali渗透学习 web渗透入门 ARL资产侦察灯塔系统搭建及使用
  18. IOS项目新手引导页图片适配方案
  19. ABAP VOFM定价过程的例程创建
  20. 利用Github Pages创建Hexo博客

热门文章

  1. loadrunner Lr_类函数之 lr_rendezvous_ex()
  2. 入职新公司,如何快速熟悉一个系统
  3. C语言计算两个时刻的时间差
  4. 堡垒之夜服务器在维护,堡垒之夜》因紧急维护服务器下线 国外某网站神回复...
  5. JAVA SWING之JFrame和JPanel布局
  6. Java jpanel 设置_Java中设置Jpanel的背景
  7. 机器学习笔记系列---集成学习
  8. IDC机房:托管式服务与私有化部署的选择比较
  9. android o适配foregroundService和notification
  10. EXCEL中数据透视表的(空白)如何不显示,并且不影响数据更新