前言

简单工厂模式,又叫做静态工厂方法模式。属于创建型工厂模式,但是不属于23中设计模式。学习简单工厂模式,是为了更好地学习工厂方法模式。

定义

简单工厂模式,即静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类型的实例。

结构模型

角色拆解分析:
Factory工厂类:简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类中创建产品类的方法可以被外部调用,创建所需的产品对象。
Product具体产品类:是创建目标
ProductX抽象产品类:创建的所有对象的父类,负责描述所有实例所共有的公共接口

简单实现

还是以笔记本电脑为例吧!

1.抽象产品类ProductX(父类)

public abstract class Computer{//产品的抽象方法public abstract void start();
}

2.具体产品类Product:

//美帝良心想
public class LenovoComputer extends Computer {@Overridepublic void start() {System.out.print("美帝良心想启动了");}
}
//铁板熊掌普
public class HpComputer extends Computer {@Overridepublic void start() {System.out.print("铁板熊掌普开机了...");}
}

3.工厂类Factory:

创建各种类型的笔记本电脑对象

public class ComputerFactory {public static Computer createComputer(String type){Computer computer=null;switch (type){case "lenovo":computer = new LenovoComputer();break;case "hp":computer = new HpComputer();break;}return computer;}
}

4.客户端调用工厂类

客户端直接调用工厂类的制造方法,并开机

public class UserClient {public static void main(String []args){//用户要求组装铁板熊掌普并开机ComputerFactory.createComputer("hp").start();}
}

优缺点

优点:用户直接输入参数即可得到对应的实例化对象,避免了直接实例化类,降低了耦合度
缺点:可实例化的类型在编译期间就确定了,增加新的类型意味着要修改工厂,违背了开放封闭原则。该模式需要提前知道所有要生成的类型,如果子类过多或者子类层次过多时不宜使用

使用场景

1.工厂类负责创建的对象比较少;
2.客户只需要知道传入工厂类的参数,不用关心创建对象的逻辑;

设计模式之简单工厂模式学习笔记相关推荐

  1. 设计模式之抽象工厂模式学习笔记

    前言 在学习抽象工厂模式之前,最好先学习了解简单工厂模式和工厂方法模式.这样会对学习抽象工厂模式有帮助,因为抽象工厂模式也是基于工厂方法模式的. 解释 说白了就是工厂的工厂,以一个超级工厂为核心,围绕 ...

  2. 简单工厂模式学习笔记

    简单工厂学习笔记 代码demo 简单工厂测试类 package com.zhh.designpattern.simplefactory;// 以生产冰箱为例,假设冰箱可能有海尔的,美的的,海信的,TC ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. python库缺少pkg_resource_ImportError: No module named pkg_resources解决方案
  2. 阿里云服务器CentOS7版本yum方式安装mysql
  3. 从TCP协议的原理来谈谈rst复位攻击
  4. ubuntu获取root权限_群辉 SSH 获取 root 权限
  5. ACM主要赛考察内容
  6. SpringBoot的@SpringBootApplication注解和其他几个注解
  7. clickhouse的ReplacingMergeTree引擎实战
  8. 没有run窗口_使用 Terminator 在一个窗口中运行多个终端 | Linux 中国
  9. IE11不支持Selenium 2.0的解决方法
  10. 程序猿的执业修养(七)——不要卖弄,多思慎言
  11. 小白进阶——Mike21(一)
  12. tkinter教程——toplevel
  13. Java - HuTool 使用 PhoneUtil、ReUtil等工具类(三)
  14. godot常用的一些概念、组件(整理于官方教程)
  15. mac笔记本连接windows10共享打印机
  16. TV_Control Android机顶盒手机控制全套程序开源
  17. 双功能RGD-TAT修饰DNA纳米胶束|聚苯胺纳米线修饰DNA(PAINW/DNA)
  18. 一键去win7快捷方式小箭头
  19. 京东商品如何批量修改?
  20. 汽车/车载/自动驾驶/辅助驾驶相关认知记录

热门文章

  1. SuperSocket 服务管理器 (ServerManager)
  2. 小技巧——让光驱符号定位在硬盘分区之后
  3. react-router的基础知识
  4. Javascript 对 CSS3 animation 动画的流程的简单控制
  5. 数组、链表、Hash(转)
  6. android中解压文件
  7. DB性能调优之RAID比较
  8. 二次开发基于无线网卡的扫描
  9. Cassandra架构、设计(集群表)和性能报告
  10. js中判断两个数字的大小