Java的工厂模式(三)
除了一般的工厂模式之外,还有抽象工厂模式,抽象工厂模式更强调产品族的概念,一个具体工厂生产出来的系列商品都是一个产品族的。
假设我们有两个具体工厂,分别是袋装水果工厂和罐装水果工厂,它们都能生产苹果和香蕉,这样生产出来的水果就会有四种,其中罐装工厂生产出的罐装水果和香蕉都属于一个产品族。要完成我们所说的代码要一步一步建立我们的工厂和产品。
首先我们要建立两个接口,再建立四个产品类分别各自继承其接口。
/*** @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的工厂模式(三)相关推荐
- Java设计模式-工厂模式(3)抽象工厂模式
在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...
- Java设计模式-工厂模式(1)简单工厂模式
Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...
- 干货分享:什么是Java设计工厂模式?
本文主要会介绍三种工厂模式:简单工厂,工厂方法,抽象工厂.其中简单工厂并不属于 GoF 23 种设计模式,工厂方法和抽象工厂模式则是属于 GoF 23 种设计模式之中的 2 种.工厂模式作为一种非常常 ...
- 什么是工厂模式java?工厂模式java优点有哪些?
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 什么是工厂模式java? 在工厂模式中,我们在创建对 ...
- java简单工厂模式_Java 简单工厂模式
Java 简单工厂模式 2014-05-28·WeaponX 3717 次浏览 ## 介绍 简单工厂模式又称静态工厂模式. 简单工厂模式由工厂类角色.抽象产品角色和具体产品角色组成. 工厂类角色是本模 ...
- Java设计模式-工厂模式(2)工厂方法模式
在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...
- 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 ...
最新文章
- java ee用户登录_EE Servlet 3:使用会话和过滤器开发用户登录
- leetcode968. 监控二叉树(dfs)
- 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究
- 手把手教你通过Eclipse工程配置调用JNI完全攻略
- php获取两个字符,php获取两个字符串之间的子字符串
- 安装Fiddler后无法上网的问题
- CUBRID学习笔记 21 查看主键外键索引
- 毕设题目:Matlab手势识别
- Spring Data JPA
- python java 速度_Java Go python 运行速度对比
- AR 和 VR 的开源平台
- Struggling
- 软件测试——三角形问题测试用例练习
- Guava限流器RateLimiter
- Cadence Orcad Capture全局修改元件属性方法及技巧图文及视频演示
- 在搭载 M1 及 M2 芯片 MacBook 设备上玩 Stable Diffusion 模型
- 雷达扫描定位 android,Android仿微信雷达扫描
- 自定义文字云/词云图----基于echarts
- 电脑dhcp服务器修改,更改电脑dhcp服务器地址
- python培训班昆明
热门文章
- Docker 容器启动失败日志分析方法,启动sonic容器实例simple时未报错运行一会又停止的问题排查实例演示
- Mac 技术篇-VS Code插件安装方法,查看vscode已安装插件的方法
- 开关二极管的导通和截止条件
- 在Visual Studio设置隐藏cmd,GTK程序有效
- Java大数,高精度
- [YTU]_2640( 编程题:运算符重载---矩阵求和)
- 1.4 matlab数值数据的类型分类
- 用Hook的方式实现防抖
- m430f1101管脚功能_M430F1101IDW
- 关于Delphi中的字符串的详细分析