除了一般的工厂模式之外,还有抽象工厂模式,抽象工厂模式更强调产品族的概念,一个具体工厂生产出来的系列商品都是一个产品族的。

  假设我们有两个具体工厂,分别是袋装水果工厂和罐装水果工厂,它们都能生产苹果和香蕉,这样生产出来的水果就会有四种,其中罐装工厂生产出的罐装水果和香蕉都属于一个产品族。要完成我们所说的代码要一步一步建立我们的工厂和产品。

  首先我们要建立两个接口,再建立四个产品类分别各自继承其接口。

/*** @author mugglean* **///苹果接口
public interface Apple {public void produce();
}//香蕉接口
public interface Banana {public void produce();
}//袋装苹果类
public class BagApple implements Apple {@Overridepublic void produce() {// TODO Auto-generated method stubSystem.out.println("-------生产了一个袋装苹果-------");}}//罐装苹果类
public class CannedApple implements Apple {@Overridepublic void produce() {// TODO Auto-generated method stubSystem.out.println("-------生产了一个罐头苹果-------");}}//袋装香蕉类
public class BagBanana implements Banana {@Overridepublic void produce() {// TODO Auto-generated method stubSystem.out.println("-------生产了一个袋装香蕉-------");}}//罐装香蕉类
public class CannedBanana implements Banana {@Overridepublic void produce() {// TODO Auto-generated method stubSystem.out.println("-------生产了一个罐头香蕉-------");}}

  然后我们再建一个抽象工厂和两个实体工厂,就是我们的罐头工厂和袋装工厂。

//工厂接口
public interface FruitFactory {//生产香蕉public Banana getBanana();//生产苹果public Apple getApple();
}//罐头工厂
public class CannedFactory implements FruitFactory {@Overridepublic Banana getBanana() {// TODO Auto-generated method stubreturn new CannedBanana();}@Overridepublic Apple getApple() {// TODO Auto-generated method stubreturn new CannedApple();}}//袋装工厂
public class BagFactory implements FruitFactory {@Overridepublic Banana getBanana() {// TODO Auto-generated method stubreturn new BagBanana();}@Overridepublic Apple getApple() {// TODO Auto-generated method stubreturn new BagApple();}}

  这样我们的所有类都建立好了,再建一个测试进程。

public class TestDrive {public static void main(String[] args) {// TODO Auto-generated method stubFruitFactory factoryone=new BagFactory();Banana myBanana=factoryone.getBanana();myBanana.produce();FruitFactory factorytwo=new CannedFactory();Apple myApple=factorytwo.getApple();myApple.produce();}}

  运行结果如下:

-------生产了一个袋装香蕉-------
-------生产了一个罐头苹果-------

  成功实现了工厂模式,这样两个工厂模式就讲解完毕了,工厂模式在JDBC和Spring中都有很好的运用,是一个很基础的设计模式。

转载于:https://www.cnblogs.com/mugglean/p/8878977.html

Java的工厂模式(三)相关推荐

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

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

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

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

  3. 干货分享:什么是Java设计工厂模式?

    本文主要会介绍三种工厂模式:简单工厂,工厂方法,抽象工厂.其中简单工厂并不属于 GoF 23 种设计模式,工厂方法和抽象工厂模式则是属于 GoF 23 种设计模式之中的 2 种.工厂模式作为一种非常常 ...

  4. 什么是工厂模式java?工厂模式java优点有哪些?

    工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 什么是工厂模式java? 在工厂模式中,我们在创建对 ...

  5. java简单工厂模式_Java 简单工厂模式

    Java 简单工厂模式 2014-05-28·WeaponX 3717 次浏览 ## 介绍 简单工厂模式又称静态工厂模式. 简单工厂模式由工厂类角色.抽象产品角色和具体产品角色组成. 工厂类角色是本模 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. java ee用户登录_EE Servlet 3:使用会话和过滤器开发用户登录
  2. leetcode968. 监控二叉树(dfs)
  3. 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究
  4. 手把手教你通过Eclipse工程配置调用JNI完全攻略
  5. php获取两个字符,php获取两个字符串之间的子字符串
  6. 安装Fiddler后无法上网的问题
  7. CUBRID学习笔记 21 查看主键外键索引
  8. 毕设题目:Matlab手势识别
  9. Spring Data JPA
  10. python java 速度_Java Go python 运行速度对比
  11. AR 和 VR 的开源平台
  12. Struggling
  13. 软件测试——三角形问题测试用例练习
  14. Guava限流器RateLimiter
  15. Cadence Orcad Capture全局修改元件属性方法及技巧图文及视频演示
  16. 在搭载 M1 及 M2 芯片 MacBook 设备上玩 Stable Diffusion 模型
  17. 雷达扫描定位 android,Android仿微信雷达扫描
  18. 自定义文字云/词云图----基于echarts
  19. 电脑dhcp服务器修改,更改电脑dhcp服务器地址
  20. python培训班昆明

热门文章

  1. Docker 容器启动失败日志分析方法,启动sonic容器实例simple时未报错运行一会又停止的问题排查实例演示
  2. Mac 技术篇-VS Code插件安装方法,查看vscode已安装插件的方法
  3. 开关二极管的导通和截止条件
  4. 在Visual Studio设置隐藏cmd,GTK程序有效
  5. Java大数,高精度
  6. [YTU]_2640( 编程题:运算符重载---矩阵求和)
  7. 1.4 matlab数值数据的类型分类
  8. 用Hook的方式实现防抖
  9. m430f1101管脚功能_M430F1101IDW
  10. 关于Delphi中的字符串的详细分析