Java设计模式之 工厂模式(简单工厂模式)
前一阵子学习了Java 中据说是最简单的设计模式的 单例模式,想一起讨论学习的小伙伴请点击这里:
Java 设计模式之单例模式
那么今天就把学习的工厂模式记录下来
- 工厂模式:
实现了创建者和调用者的分离
详细分类:简单工厂模式、工厂方法模式、抽象工厂模式
工厂模式完全遵守了面向对象设计的基本原则 即:
- 开闭原则:一个软件的实体应该对拓展开放,对修改关闭。
- 依赖倒转原则:要针对接口编程,不要针对实现编程。
- 迪米特法则:只与你直接的朋友通信,不与陌生人通信。
首先学习简单工厂模式
先举个小例子,假如我们生产两种汽车,分别是奥迪和比亚迪,常规情况下,我们直接new 一个奥迪或者比亚迪
public class AudiCar implements Car{@Overridepublic void create() {System.out.println("生产奥迪汽车");}
}public interface Car {void create();
}
写个测试类
public class FactoryClient1 {public static void main(String[] args) {AudiCar audiCar = new AudiCar();BydCar bydCar = new BydCar();audiCar.create();bydCar.create();}
}打印结果:
生产奥迪汽车
生产比亚迪汽车
但是这样我们每次都要修改我们的客户端,用户是不用知道它是怎么具体生产的,所以我们将它们装进一个工厂里,
public class CarFactorySimple {public static Car createCar(String type) {if ("audi".equals(type)) {return new AudiCar();} else if ("byd".equals(type)) {return new BydCar();}return null;}
}
还有一种写法
public class CarFactorySimple {public static Car createAudiCar() {return new AudiCar();}public static Car createBydCar() {return new BydCar();}
}
由以上可见,简单工厂对于扩展产品方面就显得不是很好了,我们一直要对其进行修改,所以:
- 简单工厂模式一般也称作静态工厂模式,就是工厂方法一般采取静态方法的模式,通过接受不同参数来生产不同的对象。
- 对于增加新产品显得无能为力,不修改代码不能完成扩展。
违反了我们的开闭原则。如何避免这种问题呢,这就是下面学习的工厂方法模式了。
关于工厂方法模式,请跳转Java 设计模式之工厂模式(工厂方法模式)
关于简单工厂模式,欢迎朋友们一起学习讨论。
Java设计模式之 工厂模式(简单工厂模式)相关推荐
- Java设计模式(二)简单工厂模式—设计模式六大原则
文章目录 设计模式六大原则 1. 开闭原则 2. 里氏代换原则 3. 依赖倒转原则 4. 接口隔离原则 5. 迪米特法则(最少知道原则) 6. 合成复用原则 工厂设计模式 什么是工厂模式 工厂模式的好 ...
- Java设计模式(十二) 策略模式
策略模式介绍 策略模式定义 策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换.客户端可以自行决定使用哪种算法. 策略模式类图 策略模 ...
- 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式
设计模式C#描述之--简单工厂模式 前 言:设计模式是软件开发领域的精髓之一.学好设计模式是目前每一个开发人员的必修课.目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者 ...
- 设计模式(1)--简单工厂模式、策略模式
设计模式(1)--简单工厂模式.策略模式 1. 简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static ...
- Java设计模式(5):工厂模式
5,工厂模式(Factory) 工厂模式在逻辑上可以分为三种:简单工厂模式,工厂方法模式和抽象工厂模式.其中简单工厂模式不属于23种设计模式. 从实际中理解三种工厂模式,大致可以理解为工厂发展的三个阶 ...
- 设计模式(0)简单工厂模式
0 设计模式基础 0.0 设计模式的定义 先来看一下设计模式常见的书面定义: 设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他 ...
- JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂——区分“变与不变”
JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·简单工厂--区分"变与不变" 先来说说构造器 在介绍工厂模式之前,为了辅助大家的理解,我想先在这儿给大家介绍 ...
- 设计模式(4)—— 简单工厂模式(Simple Factory,创建型)
1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性.简单工厂模式(Simple Factory Pattern)属于创建型模式.简单工厂模式,由一个工厂对象决定创建出哪一种产品类的实例, ...
- 设计模式-创建型模式-简单工厂模式
工程地址:设计模式-简单工厂源码-C++文档类资源-CSDN下载C++设计模式-创建型模式-简单工厂模式源码更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.n ...
- c++switch实现猜拳_策略模式+简单工厂+注解消除 if-else/switch-case
消除代码中的 if-else/switch-case 在很多时候,我们代码中会有很多分支,而且分支下面的代码又有一些复杂的逻辑,相信很多人都喜欢用 if-else/switch-case 去实现.做的 ...
最新文章
- mysql 查询结果转置_转置MySQL查询 – 需要将行放入列中
- 批命令 set /a与set /p有哪些区别
- Oracle存储过程(增、删、改)写法
- 查看操作系统版本linux_查看电脑操作系统版本(适用于Mac OS)
- C语言再学习 -- 创建excel文件
- 优化委托的 DynamicInvoke
- 数据结构实验 4.括号画家
- 自动驾驶——localization的学习笔记
- task 13-change the lcd to 32bpp form 16bpp.
- cad插入块_「AutoCAD之属性块」别怕难,从零做起,制作属性块只需6步走
- 达梦DISQL执行脚本方法总结
- Matlab中dir使用中遇到的一些问题
- 可分离变量的微分方程
- 6种时间管理方法概要
- 慕课网付费视频 linux,分享给 Linux 用户的 10 有用工具
- Ghost for Linux 出色的硬盘对拷工具(转)
- 【Security】可信网络连接
- 关于VERIFY_OCTAL_PERMISSIONS权限检查
- 超(效)等位基因,亚(效)等位基因,反(效)等位基因,新(效)等位基因
- 数据结构课程设计---赛事统计,校园导航,算术表达式