java设计模式_工厂模式
关于设计模式
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结,是一种设计思维,使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化。使用设计模式,使得开发变得更规范和简单。
工厂模式
- 概述:属于创建型设计模式,需要生成的对象叫做产品 ,生成对象的地方叫做工厂。
- 使用场景:在任何需要生成复杂对象的地方,都可以使用工厂方法模式, 直接用new可以完成的不需要用工厂模式。个人理解,重点就是这个复杂 (构造函数有很多参数)和 是否可以 直接用new。
工厂模式例子
假设现在的场景是某个宝马子生产公司,正在按需求生产宝马汽车,那么,如下:
- 公司具有宝马汽车,该公司的汽车都有共同的行为所以有了该汽车公司的一个接口,用来规范该公司的所有汽车的行为属性,这里假设,只有展示行为——show();
1 /**
2 * 接口:定义该公司产品的通用属性和行为
3 * @author
4 *
5 */
6
7 public interface BmwCar {
8
9 public String showBmwCar();
10 }- 具体实现该接口,也就是实现该公司符合该要求的汽车产品,如下,假设,该生产公司只生产Bmw523和Bmw320两个产品;
1 public class Bmw523 implements BmwCar{
2
3 @Override
4 public String showBmwCar() {
5 String Bmw523Info = "我是Bmw523";
6 return Bmw523Info;
7 }
8
9 }public class Bmw320 implements BmwCar{ @Override
public String showBmwCar() {
String Bmw320Info = "我是Bmw320";
return Bmw320Info;
} }- 来一个具体生产创作汽车产品的具体工厂BmwFactory;
1 /**
2 * 具有生产功能的工厂
3 * @author
4 *
5 */
6
7 public class BmwFactory {
8
9 public BmwCar createBmw320() {
10 return new Bmw320();
11 }
12
13 public BmwCar createBmw532() {
14 return new Bmw523();
15 }
16 }- 来一个实例测试,我要买车啦
1 public class TestCreateBmw {
2
3 public static void main(String[] args) {
4
5 BmwFactory myFactory = new BmwFactory();//实例化工厂
6 BmwCar myBmw = myFactory.createBmw320();//实例化一个产品
7 System.out.println( myBmw.showBmwCar() );//使用该产品
8 }
9
10 }
*
java设计模式_工厂模式的更多相关文章
- java设计模式2————工厂模式
1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- Java设计模式之工厂模式(Factory模式)介绍(转载)
原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...
- Java 设计模式之工厂模式(二)
原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...
- 浅析JAVA设计模式之工厂模式(二)
1 工厂方法模式简单介绍 工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类.而是一个抽象工厂,提 ...
- java 设计模式之工厂模式与反射的结合
工厂模式: /** * @author Rollen-Holt 设计模式之 工厂模式 */ interface fruit{ public abstract void eat(); } ...
- JAVA设计模式--抽象工厂模式
抽象工厂设计模式 1.系统中有多个产品族,而系统一次只可能消费其中一族产品2.同属于同一个产品族的产品以其使用.来看看抽象工厂模式的各个角色(和工厂方法的如出一辙):抽象工厂角色: 这是工厂方法模式的 ...
- Java设计模式之-----工厂模式(简单工厂,抽象工厂)
一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...
- Java设计模式之工厂模式(简单工厂模式+工厂方法模式)
摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...
随机推荐
- APT组织跟踪与溯源
前言 在攻防演练中,高质量的蓝队报告往往需要溯源到攻击团队.国内黑产犯罪团伙.国外APT攻击. 红队现阶段对自己的信息保护的往往较好,根据以往溯源成功案例来看还是通过前端js获取用户ID信息.mysq ...
- MyBatis的Mapper代理笔记
MaBatis--Mapper代理 目前使用SqlSession进行增删改查的缺点: 没有办法实现多参传值 书写的时候没有接口,后期的维护低 使用Mapper的动态代理方式来解决问题 具体实现 首先我 ...
- 《openssl编程》:第一章基础知识
第一章 基础知识 1.1 对称算法 对称算法使用一个密钥.给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同.解密时,使用读密钥与加密密钥相同. 对称算法主要有四种加密模式: (1) 电子密码 ...
- EF架构封装类
http://www.woxihuan.com/46528208/1323334777088641.shtml http://www.ediclot.com/archives/2368 http:// ...
- JavaScript深拷贝实现方式
1.递归 function deepCope (obj) { // 要拷贝的数据为引用类型属性(数组或对象) if (obj && typeof obj === 'object') { ...
- pip安装更换国内源
镜像地址:阿里云 https://mirrors.aliyun.com/pypi/simple/豆瓣http://pypi.douban.com/simple/清华大学 https://pypi.tu ...
- Park-2018论文
太阳射电图:Solar magnetograms, EUV images, GOES X-ray flux data. Magnetograms: http://solar-center.sta ...
- Flutter 对状态管理的认知与思考
前言 由 编程技术交流圣地[-Flutter群-] 发起的 状态管理研究小组,将就 状态管理 相关话题进行为期 两个月 的讨论. 目前只有内定的 5 个人参与讨论,如果你对 状态管理 有什么独特的见解 ...
- vue 熟悉项目结构 创建第一个自己的组件
* vue开发环境搭建 * 项目入口文件 ./src/main.js // The Vue build version to load with the `import` command // (ru ...
- docker挂载目录问题:touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
docker 运行后, 执行docker logs -f myjenkins时报错:touch: cannot touch '/var/jenkins_home/copy_reference_file ...