设计模式 工厂模式比较
简单工厂模式
简单工厂模式不是 23 种里的一种,简而言之,就是有一个专门生产某个产品的类。
比如下图中的鼠标工厂,专业生产鼠标,给参数 0,生产戴尔鼠标,给参数 1,生产惠普鼠标。
工厂模式
工厂模式也就是鼠标工厂是个父类,有生产鼠标这个接口。
戴尔鼠标工厂,惠普鼠标工厂继承它,可以分别生产戴尔鼠标,惠普鼠标。
生产哪种鼠标不再由参数决定,而是创建鼠标工厂时,由戴尔鼠标工厂创建。
后续直接调用鼠标工厂.生产鼠标()即可
抽象工厂模式
抽象工厂模式也就是不仅生产鼠标,同时生产键盘。
也就是 PC 厂商是个父类,有生产鼠标,生产键盘两个接口。
戴尔工厂,惠普工厂继承它,可以分别生产戴尔鼠标+戴尔键盘,和惠普鼠标+惠普键盘。
创建工厂时,由戴尔工厂创建。
后续工厂.生产鼠标()则生产戴尔鼠标,工厂.生产键盘()则生产戴尔键盘。
在抽象工厂模式中,假设我们需要增加一个工厂
假设我们增加华硕工厂,则我们需要增加华硕工厂,和戴尔工厂一样,继承 PC 厂商。
之后创建华硕鼠标,继承鼠标类。创建华硕键盘,继承键盘类即可。
在抽象工厂模式中,假设我们需要增加一个产品
假设我们增加耳麦这个产品,则首先我们需要增加耳麦这个父类,再加上戴尔耳麦,惠普耳麦这两个子类。
之后在PC厂商这个父类中,增加生产耳麦的接口。最后在戴尔工厂,惠普工厂这两个类中,分别实现生产戴尔耳麦,惠普耳麦的功能。 以上。
设计模式 工厂模式比较相关推荐
- Java设计模式-工厂模式(3)抽象工厂模式
在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...
- Java设计模式-工厂模式(2)工厂方法模式
在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...
- Java设计模式-工厂模式(1)简单工厂模式
Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...
- 设计模式---工厂模式
设计模式---工厂模式 工厂方法模式 概述:工厂方法模式中抽象工厂负责定义创建对象的接口,具体创建工作由继承抽象工厂的具体类实现. 优点:客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新 ...
- java设计模式工厂模式_Java中的工厂设计模式
java设计模式工厂模式 Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the C ...
- java设计模式工厂模式_Java中的复合设计模式
java设计模式工厂模式 Composite pattern is one of the Structural design pattern. Composite design pattern is ...
- java设计模式工厂模式_Java中的桥梁设计模式
java设计模式工厂模式 Today we will look into Bridge Design Pattern in java. When we have interface hierarchi ...
- java设计模式工厂模式_Java中的外观设计模式
java设计模式工厂模式 Facade Design Pattern is one of the Structural design patterns (such as Adapter pattern ...
- 设计模式-工厂模式(学习)
设计模式-工厂模式(学习) 在程序的世界里,就像射雕英雄传一样,我们的技能就像是武功一样,我们只有不断去学习练习才能有机会像郭靖一样成为"天下第一". 我认为技能和武功是很类似的, ...
- 设计模式-工厂模式的3中不同实现[JAVA]
设计模式-工厂模式的3中不同实现[JAVA] 工厂模式简介 In Factory pattern, we create object without exposing the creation log ...
最新文章
- 安徽建筑大学计算机专业年新,2017年安徽建筑大学计算机技术909数据结构[专业硕士]考研题库...
- 小米路由器4Q的设置
- 线程停止继续_晓龙吊打面试官系列: 如何优雅的停止一个线程
- 一款强大的 Kubernetes API 流量查看神器
- 机器学习-01regression
- TensorFlow12CIFAR-CNN实现
- java struts2下载文件_java struts2入门学习---文件下载的二种方式
- web前端学习之HTML
- codevs 2651 孔子教学——同桌
- .NET中获取电脑名、IP地址及用户名方法
- 程序员发展职业规划_程序员做到以下几点,十年之后才不会被淘汰
- 【cuda】——npp/cuda图像预处理resize+norm对比
- 【RDMA】RDMA SEND/WRITE编程实例(IBV Verbs )
- 网站中CSS是实现什么功能的,什么是CSS,其主要作用是什么
- 微信扫描小程序码登录 PC 网站 Demo
- 数据架构:数据中心 主备、双活
- 记录一个问题:jdbc连接数据库很慢【能连上,但很慢】、同理,任何应用连接慢也可以尝试用该方法
- 扫描转换html,html+css实现图片扫描仪特效
- 360极速浏览器去广告优化版 v13.0.2101.0
- 嵌入式:浅析FinFET技术的发展前景
热门文章
- 影响线型缩聚物分子量的因素_高分子化学试题
- python房子代码_基于python的链家小区房价爬取——仅需60行代码!
- mysql查询表的列名主键_Oracle中查看所有的表,用户表,列名,主键,外键
- ASP.NET Core利用拦截器 IActionFilter实现权限控制
- 虚拟机Linux和宿主机传输文件
- Python人工智能之路 - 第一篇 : 你得会点儿Python基础
- android ListView几个比较特别的属性
- hdu 4608 I-number(13多校#1 ,1009)
- 私人笔记 -- 将图片插入到指定的单元格位置,并设置图片的宽度和高度
- MoveNet 姿态估计,树莓派上也能跑!