工厂的指责就是制作产品,那么产品就可以理解为是我们的对象,而工厂就是为了实例化对象而对象的,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。

1、简单工厂模式

简单工厂模式:也叫静态工厂模式,简单工厂模式相当于试试一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品的参数即可,相当于所有的汽车都是由一个厂里面生产出来的的,这个厂既能生产宝马,又能生产奔驰,还能生产其他的品牌的汽车,但是工厂的职责过重,而且当类型过多时不利于系统的扩展维护;简单工厂模式是不属于23种设计模式里面的;

简单工厂模式示例代码

package com.designPatterm.factory.one;
/*** 设计模式-工厂模式: 普通工厂模式*/
public class OrdinaryFactory {public static void main(String[] args) {CarFactory.getInstance("bc").showCar();CarFactory.getInstance("bmw").showCar();}
}// 造车的工厂
class    CarFactory {public static  Car getInstance(String car){if(car.equals("bmw")){return  new BmwCar();}if(car.equals("bc")){return new BcCar();}return null;}
}// 车的接口类
interface    Car {public void showCar();
}// 宝马车
class BmwCar implements Car{public void showCar(){System.out.println("我是宝马车");}
}//奔驰车
class BcCar implements Car{public void showCar(){System.out.println("我是奔驰车");}
}

2、工厂方法模式

工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。该核心类成为一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。而且每个工厂都只创建一种产品;

工厂方法模式示例代码

package com.designPatterm.factory.two;/*** 设计模式-工厂模式: 工厂方法模式*/
public class FactoryMethod {public static void main(String[] args) {Factory bmwFa = new BmwCarFactory();Factory bcFa = new BcCarFactory();Car bmw = bmwFa.createCar();Car bc = bcFa.createCar();bmw.showCar();bc.showCar();}
}// 工厂接口,所有造车的工厂都实现 Factory 接口
interface Factory{Car createCar();
}// 造宝马车的工厂
class    BmwCarFactory implements Factory{@Overridepublic Car createCar() {return new BmwCar();}
}
// 造奔驰车的工厂
class BcCarFactory implements Factory{@Overridepublic Car createCar() {return new BcCar();}
}// 车的接口,所有车都实现 Car 接口
interface    Car {public void showCar();
}// 宝马车
class BmwCar implements Car{public void showCar(){System.out.println("我是宝马车");}
}//奔驰车
class BcCar implements Car{public void showCar(){System.out.println("我是奔驰车");}
}

3、抽象工厂模式

上面说到的工厂方法模式里面,每个工厂都只创建一种产品;那么抽象工厂模式就可以理解为每个工厂都可以创建多个产品;

例如: 小米工厂可以生产小米手机和笔记本电脑,而苹果工厂可以生产iphone 和 mac,具体流程图如下:

抽象工厂模式示例代码

package com.designPatterm.factory.three;/*** 设计模式-工厂模式: 抽象工厂模式*/
public class AbstractFactory {public static void main(String[] args) {// 实例化工厂类Factory bmwFa = new BmwFactory();Factory bcFa = new BcFactory();// 生产宝马车的轮子和座椅Car bmwWheel = bmwFa.createWheel();Car bmwChair = bmwFa.createChair();// 生产奔驰车的轮子和座椅Car bcWheel = bcFa.createWheel();Car bcChair = bcFa.createChair();// 展示生产完成的宝马车轮子和座椅bmwWheel.showCar();bmwChair.showCar();// 展示生产完成的宝马车轮子和座椅bcWheel.showCar();bcChair.showCar();}
}// 工厂接口,所有造车的工厂都实现 Factory 接口
interface Factory{// 生产轮子Car createWheel();// 生产座椅Car createChair();
}// 造宝马车零件的工厂
class    BmwFactory implements Factory {@Overridepublic Car createWheel() {return new Wheel("宝马");}@Overridepublic Car createChair() {return new Chair("宝马");}
}// 造奔驰车零件的工厂
class BcFactory implements Factory {@Overridepublic Car createWheel() {return new Wheel("奔驰");}@Overridepublic Car createChair() {return new Chair("奔驰");}
}// 车的接口,所有车都实现 Car 接口
interface    Car {public void showCar();
}// 轮子
class Wheel implements Car {String carName;public Wheel(String carName){this.carName = carName;}public void showCar(){System.out.println("生产了 "+carName+"车轮子");}
}// 座椅
class Chair implements Car {String carName;public Chair(String carName){this.carName = carName;}public void showCar(){System.out.println("生产了 "+carName+"车座椅");}
}

设计模式 -- 工厂模式相关推荐

  1. Java设计模式-工厂模式(3)抽象工厂模式

    在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...

  2. Java设计模式-工厂模式(2)工厂方法模式

    在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...

  3. Java设计模式-工厂模式(1)简单工厂模式

    Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...

  4. 设计模式---工厂模式

    设计模式---工厂模式 工厂方法模式 概述:工厂方法模式中抽象工厂负责定义创建对象的接口,具体创建工作由继承抽象工厂的具体类实现. 优点:客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新 ...

  5. java设计模式工厂模式_Java中的工厂设计模式

    java设计模式工厂模式 Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the C ...

  6. java设计模式工厂模式_Java中的复合设计模式

    java设计模式工厂模式 Composite pattern is one of the Structural design pattern. Composite design pattern is ...

  7. java设计模式工厂模式_Java中的桥梁设计模式

    java设计模式工厂模式 Today we will look into Bridge Design Pattern in java. When we have interface hierarchi ...

  8. java设计模式工厂模式_Java中的外观设计模式

    java设计模式工厂模式 Facade Design Pattern is one of the Structural design patterns (such as Adapter pattern ...

  9. 设计模式-工厂模式(学习)

    设计模式-工厂模式(学习) 在程序的世界里,就像射雕英雄传一样,我们的技能就像是武功一样,我们只有不断去学习练习才能有机会像郭靖一样成为"天下第一". 我认为技能和武功是很类似的, ...

  10. 设计模式-工厂模式的3中不同实现[JAVA]

    设计模式-工厂模式的3中不同实现[JAVA] 工厂模式简介 In Factory pattern, we create object without exposing the creation log ...

最新文章

  1. logcat --pid xx 查看某个进程的信息
  2. php缺失php5.dll,php5.dll丢失怎么办
  3. simapro学习_北京师范大学环境学院
  4. 浩然GG和女朋友的游戏 (数学,规律)
  5. jeecg自定义datagrid封装列表分页数据显示自定义字段
  6. 彻底搞懂javascript中的match, exec的区别
  7. BitMEX联合创始人:以比特币为首的加密货币综合体是防范恶性通货膨胀的最佳对冲
  8. nodejs mysql 增删改查_#NodeJS# MySQL的介绍安装使用以及使用NodeJS链接MySQL实现增删改查...
  9. 游戏引擎BigWorld宣布将在4.0版本支持HTML5
  10. GitHub 上有哪些优秀的 Python 爬虫项目?
  11. JavaScript是什么意思?
  12. three.js 05-06 之 CylinderGeometry 几何体
  13. python爬虫框架论文开题报告范文_研究思路及框架--开题报告
  14. 关于:WindowsOffice 产品语言包
  15. 3D模型实现「唱、跳、Rap、篮球」
  16. 【小程序项目开发 --- 京东商城】 启航篇之uni-app项目搭建
  17. 第三方登入时昵称出现emoji表情致mysql插入失败
  18. python读取xlsx文件找不到_在python中打开并读取excel .xlsx文件
  19. python画自定义颜色的坐标图
  20. SQL Server安装提示安装程序无法通过windows update服务搜索更新

热门文章

  1. 【MM32F5270开发板试用】一、让MM32F5270支持RT-Thread~打通串口UART
  2. CentOS7磁盘分区及文件系统
  3. Pytorch实现卷积神经网络(回归问题)
  4. EM的意思是“Expectation Maximization
  5. Unity程序联动rs485可编程开关
  6. 在Win9x/NT下获取硬盘物理序列号
  7. 奇瑞新能源掌门人鲍思语:智能化将是新能源车的未来
  8. docker 启动nacos
  9. 2022-2028年全球与中国平板电脑键盘行业产销需求与投资预测分析
  10. 理想国Java学生管理系统实战教程+源码