简单工厂模式

简单工厂模式,属于类的创新型模式,又称静态工厂方法模式,使通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

模式动机

设想软件开发场景中,客户端需要创建和使用不同品牌的电视机对象,这些不同的电视机品牌都源自同一个电视抽象类。客户端只需要知道电视机品牌名称并提供一个调用方法,然后把参数传入就可以返回一个电视机对象,从而实现电视机对象的创建与使用分离。

模式结构及角色分析

 简单工厂模式类图如下:


简单工厂模式类图中包含实现关系和依赖关系,如上图所示。
角色1:抽象产品Product为产品的接口。
角色2:具体产品ConcreteProduct为Product的实现类。
角色3:工厂Factory可以提供创建产品对象的静态方法。

模式实现

程序代码如下:
(1)ITelevision接口

package television;public interface ITelevision {//角色1:抽象产品public abstract void product();}

(2)HaierTelevison类

package television;public class HaierTelevison implements ITelevision{@Overridepublic void product() {// 角色2:具体产品System.out.println("海尔电视机生产了。。。");}}

(3)HisenseTelevison类

package television;public class HisenseTelevison implements ITelevision {@Overridepublic void product() {// 角色2:具体产品System.out.println("hisense电视生产了。。。。");}}

(4)TelevisionFactory类

package television;//简单工厂模式练习public class TelevisionFactory {//角色3:工厂类//生产某种品牌的静态方法public static ITelevision productTelevision(String name) throws InstantiationException, IllegalAccessException {if (name.equalsIgnoreCase("Haier")) {return HaierTelevison.class.newInstance();} else if (name.equalsIgnoreCase("Hisense")) {return HisenseTelevison.class.newInstance();} else {System.out.println("找不到相应的实例化类。。。");return null;}}}

(5)FactoryTest类

package television;public class FactoryTest {public static void main(String[] args) throws InstantiationException, IllegalAccessException {ITelevision haier=TelevisionFactory.productTelevision("haier");ITelevision hisense=TelevisionFactory.productTelevision("hisense");if(haier!=null){haier.product();}if(hisense!=null){hisense.product();}}}

模式评价

在简单工厂模式中,核心类Factory类只负责产品的创建(提供静态方法),调用者不必知道产品的创建细节,这符合单一职责原则。如果不使用工厂类,那么调用者不仅需要知道接口,还需要知道其实现类。
简单工厂模式存在的问题:当增加新产品时,需要修改工厂类。这将在工厂模式中得到解决。

简单工厂模式实现-电视机工厂案例相关推荐

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

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

  2. 工厂模式——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...

    工厂模式在<Java与模式>中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品: 2)工厂方法模式(Factory Method):又称为多形性工厂: 3) ...

  3. GOLANG工厂模式、简单工厂模式、抽象工厂模式、创建者模式

    设计模式可以大大提高代码复用性,使得程序的修改更加灵活.另外将各个功能模块抽象解耦出来,在某个模块需要更改时不至于会对整体代码进行修改,解耦的好的话只简单修改几个地方即可以切换某个模块在实现上的切换, ...

  4. 【软件设计模式】工厂模式(简单工厂模式、一般工厂模式、抽象工厂模式)

    概述: 工厂模式把对象的创建交由某个特定的类来实现,该类为工厂类,该类的方法称为工厂方法,仅仅负责创建对象,从而将客户端复杂的对象创建语句实现解耦.责任分离,方便扩展和维护. 分类: 工厂模式分为简单 ...

  5. 设计模式之——简单(静态)工厂模式和抽象工厂模式

    文章目录 [关于设计模式] 设计模式的诞生 设计模式概念与解读 设计模式的原则 [关于工厂模式] 简单工厂(静态工厂)模式的概念 抽象工厂模式 工厂模式的使用时机和注意事项 给自己的思考 [关于设计模 ...

  6. 简单工厂模式和抽象工厂模式

    简单工厂模式和抽象工厂模式 不BB,直接来需求设计 一个披萨店现在需要生产多种颜色的披萨供顾客使用,我们为了满足生产多种颜色的披萨生产,脑海里面第一想法是使用工厂模式来创建不同的披萨. 先看草图的大致 ...

  7. JAVA工厂模式优缺点_简单工厂模式、工厂模式和抽象工厂模式区别及优缺点

    各位小伙伴好,今天给大家主要介绍一下简单工厂模式.工厂模式和抽象工厂模式的区别及各自的优缺点. (本文实现语言为Python3) [前言] 众所周知今天所讲的内容是 设计模式的一类:对于设计模式这个概 ...

  8. 设计模式之工厂模式(披萨店案例)

    设计模式之工厂模式(披萨店案例) 披萨类如下: import java.util.ArrayList;public abstract class Pizza {String name;String d ...

  9. 简单工厂模式、工厂模式和抽象工厂模式区别及优缺点

    各位小伙伴好,今天给大家主要介绍一下简单工厂模式.工厂模式和抽象工厂模式的区别及各自的优缺点. (本文实现语言为Python3) [前言] 众所周知今天所讲的内容是设计模式的一类:对于设计模式这个概念 ...

最新文章

  1. struts2教程(4)--类型转换
  2. windows server 2008 r2之间的ftp传输脚本
  3. 【已解决】可以访问Tomcat下webapp中的文件目录(间接实现下载功能)
  4. 在centos服务器安装MySQL数据库详细步骤
  5. 安卓APP_ 控件(2)—— Button
  6. 如何用c语言验证一个定理,验证动量定理方法一
  7. C# 将控件的Controls属性下的所有控件取出以便使用LINQ语句进行查询
  8. 基于zookeeper实现配置集中管理【转】
  9. 上怎么图片和字环绕_计算机上的0和1是怎么变成我们屏幕上看到的图片、视频和声音的?...
  10. python必背入门代码-你们都是怎么学 Python 的?
  11. 回归分析的基本步骤与自相关性
  12. 高质量商业计划书的10个写作心得
  13. 计算机开机最快,电脑开机速度,最快几秒?
  14. UE4场景流程规范-纹理压缩(美术版/程序版/太长不看版)
  15. Android源码配置第三方应用电池白名单流程分析笔记
  16. 设置单选框只能选择一个
  17. 判断自己的电脑是否被入侵
  18. mysql 中文乱码问题解决(复制粘贴就可以解决)
  19. 【Python基础 | 列表】小实验:实现显示商品,选择商品,将商品加入购物车,得到总价格
  20. 常用品牌电脑的型号特点

热门文章

  1. mac 双击证书无法进入钥匙串(证书无法添加到钥匙串)
  2. Android苦手的App之旅(1)
  3. Bcrypt加密详解
  4. 【Web 安全】XSS 攻击详解
  5. Nacos 集群配置
  6. CSS常用语法总结【精华篇】
  7. 高次差周跳检测C语言,利用高次差与自相关函数对周跳探测与处理
  8. 四大组件---ContentResolver
  9. MMdetection之train_detector 源码解析
  10. 量化交易之股票数据的获取——同花顺软件 1