Java的工厂模式(三)
除了一般的工厂模式之外,还有抽象工厂模式,抽象工厂模式更强调产品族的概念,一个具体工厂生产出来的系列商品都是一个产品族的。
假设我们有两个具体工厂,分别是袋装水果工厂和罐装水果工厂,它们都能生产苹果和香蕉,这样生产出来的水果就会有四种,其中罐装工厂生产出的罐装水果和香蕉都属于一个产品族。要完成我们所说的代码要一步一步建立我们的工厂和产品。
首先我们要建立两个接口,再建立四个产品类分别各自继承其接口。
/**
* @author mugglean
*
*
*/ //苹果接口
public interface Apple {
public void produce();
} //香蕉接口
public interface Banana {
public void produce();
} //袋装苹果类
public class BagApple implements Apple { @Override
public void produce() {
// TODO Auto-generated method stub
System.out.println("-------生产了一个袋装苹果-------");
} } //罐装苹果类
public class CannedApple implements Apple { @Override
public void produce() {
// TODO Auto-generated method stub
System.out.println("-------生产了一个罐头苹果-------");
} } //袋装香蕉类
public class BagBanana implements Banana { @Override
public void produce() {
// TODO Auto-generated method stub
System.out.println("-------生产了一个袋装香蕉-------");
} } //罐装香蕉类
public class CannedBanana implements Banana { @Override
public void produce() {
// TODO Auto-generated method stub
System.out.println("-------生产了一个罐头香蕉-------"); } }
然后我们再建一个抽象工厂和两个实体工厂,就是我们的罐头工厂和袋装工厂。
//工厂接口
public interface FruitFactory {
//生产香蕉
public Banana getBanana();
//生产苹果
public Apple getApple();
} //罐头工厂
public class CannedFactory implements FruitFactory { @Override
public Banana getBanana() {
// TODO Auto-generated method stub
return new CannedBanana();
} @Override
public Apple getApple() {
// TODO Auto-generated method stub
return new CannedApple();
} } //袋装工厂
public class BagFactory implements FruitFactory { @Override
public Banana getBanana() {
// TODO Auto-generated method stub
return new BagBanana();
} @Override
public Apple getApple() {
// TODO Auto-generated method stub
return new BagApple();
} }
这样我们的所有类都建立好了,再建一个测试进程。
public class TestDrive {
public static void main(String[] args) {
// TODO Auto-generated method stub
FruitFactory factoryone=new BagFactory();
Banana myBanana=factoryone.getBanana();
myBanana.produce();
FruitFactory factorytwo=new CannedFactory();
Apple myApple=factorytwo.getApple();
myApple.produce();
}
}
运行结果如下:
-------生产了一个袋装香蕉-------
-------生产了一个罐头苹果-------
成功实现了工厂模式,这样两个工厂模式就讲解完毕了,工厂模式在JDBC和Spring中都有很好的运用,是一个很基础的设计模式。
Java的工厂模式(三)的更多相关文章
- !!转!!java 简单工厂模式
举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就是 ...
- Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...
- 设计模式系列之工厂模式三兄弟(Factory Pattern)
说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修炼之道)>一书的阅读笔记.个人感觉这本书讲的不错,有兴趣推荐读一读.详细内容也可以看看此书作者的博客https:/ ...
- 一张图搞定Java设计模式——工厂模式! 就问你要不要学!
小编今天分享的内容是Java设计模式之工厂模式. 收藏之前,务必点个赞,这对小编能否在头条继续给大家分享Java的知识很重要,谢谢!文末有投票,你想了解Java的哪一部分内容,请反馈给我. 获取学习资 ...
- Java抽象工厂模式
Java抽象工厂模式 基本定义 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的.抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象 ...
- Java的工厂模式(一)
Java的工厂模式在框架中是用的到很多的,所谓的工厂模式,其实也就是用一个接口来创建对象,把实例化的工作推迟到子类去实现.这样在主函数中就可以直接创建一个工厂类,再通过这个工厂类实现操作. 假设有一个 ...
- Java简单工厂模式
Java简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简 ...
- Java 静态工厂模式的使用
多相关文章请参考:http://www.enjoytoday.cn/categorys/java 静态工厂模式给人的第一印象就是:static+abstract.这两个词汇已经说明了一切,一个是周期长 ...
- 【设计模式】Java设计模式 -工厂模式
[设计模式]Java设计模式 -工厂模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目 ...
随机推荐
- bootstrap 常用class(不定时更新)
1,字体居右 text-right 2,字体居中 text-center
- 找到SVN版本机上项目的地址
在你的项目文件上右击:点击Copy URL to Clipboard(复制URL到剪切板)
- vue 学前班002(创建一个实例)
创建一个Vue实例 我们之前说过,Vue是数据驱动视图的,只要model(模型层)的数据改变了,Vue就会帮我们改变视图上显示的内容,不用我们自己去动手写代码更新.那么,它是怎么做到的,我们的代码要怎 ...
- ubuntu 中 mongodb 数据读写权限配置
首先,我们先对mongodb 数据库的权限做一点说明: 1 默认情况下,mongodb 没有管理员账号 2 只有在 admin 数据库中才能添加管理员账号并开启权限 3 用户只能在所在的数据库中登录, ...
- System Trace in Depth
原理 使用 system trace 时,会记录最近 5s 的 kernel trace,然后分析下面的操作: Scheduling activity System calls Virtual mem ...
- docker安装指定版本TAG的镜像
在docker中安装镜像,一般过程是,docker search 软件名称. 本文以tomcat为例,讲解下载指定版本TAG的tomcat. 搜索tomcat镜像 $ sudo docker sear ...
- leetcode-917-仅仅反转字母
题目描述: 给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转. 示例 1: 输入:"ab-cd" 输出:"dc-b ...
- EJB3 EntityBean中EntityManager的管理类型
EJB中EntityManager的管理方式有两种:Container-managed EntityManager和Application-managed EntityManager 即容器管理的En ...
- apache URL重写 标志表 以及 错误解决方法
Apache mod_rewrite规则重写的标志一览 1) R[=code](force redirect) 强制外部重定向 强制在替代字符串加上http://thishost[:thisport] ...
- 【数组】Search for a Range
题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...