Java工厂方法模式
工厂方法模式:
/**
* 工厂方法模式:也叫工厂模式,属于创建型模式,父类工厂(接口)负责定义产品对象的公共接口,
* 而子类工厂负责创建具体的产品对象。
* 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过子类工厂类决定实例化哪一个具体对象。
*
* 工厂方法模式包含四个部分:
* 1.抽象产品: 产品对象的基类,或者是同一的接口。
* 2.具体的子类产品:各个不同的实例对象类。
* 3.抽象工厂: 所有子类工厂的基类,或同一接口。
* 4.具体的工厂子类:负责每个产品对象的具体创建。
*/
/**
* 抽象产品,交通工具接口
* @ClassName: TrafficTool
* @author BlueLake
* @date 2014年9月10日 下午4:42:10
*/
public interface TrafficTool {
//去上班的抽象方法
public void gotoWork();
}
/**
* 抽象工厂:交通工具工厂
* @ClassName: TrafficFactory
* @author BlueLake
* @date 2014年9月10日 下午4:43:53
*/
public interface TrafficFactory {
//创建交通工具的抽象方法
public TrafficTool getTool(); }
package demo.mode.factory;
//具体产品:自行车
public class Bike implements TrafficTool{
//具体上班方法
public void gotoWork(){
System.out.println("骑自行车去上班-bike-");
} }
package demo.mode.factory;
//具体工厂:自行车工厂
public class BikeFactory implements TrafficFactory{
//生成自行车对象
public TrafficTool getTool(){
return new Bike();
} }
package demo.mode.factory;
//具体产品:公交车
public class Bus implements TrafficTool{
//具体上班方法
public void gotoWork() {
System.out.println("坐公交车上班---bus---");
} }
package demo.mode.factory;
//具体工厂:公交车
public class BusFactory implements TrafficFactory{
//生成公交车
public TrafficTool getTool() {
return new Bus();
}
}
测试:
package demo.mode.factory;
public class FactoryTest {
/**
* 工厂方法模式:也叫工厂模式,属于创建型模式,父类工厂(接口)负责定义产品对象的公共接口,
* 而子类工厂负责创建具体的产品对象。
* 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过子类工厂类决定实例化哪一个具体对象。
*
* 工厂方法模式包含四个部分:
* 1.抽象产品: 产品对象的基类,或者是同一的接口。
* 2.具体的子类产品:各个不同的实例对象类。
* 3.抽象工厂: 所有子类工厂的基类,或同一接口。
* 4.具体的工厂子类:负责每个产品对象的具体创建。
*/
public static void main(String[] args){
//定义公共的变量,工厂接口
TrafficFactory fac = null;
TrafficTool tool = null;
//具体调用时,只需要调用不同的工厂就可以实现不用的操作。
fac = new BikeFactory();
tool = fac.getTool();
tool.gotoWork();//骑自行车去上班-bike-
fac = new BusFactory();
tool = fac.getTool();
tool.gotoWork();//坐公交车上班---bus---
}
}
工厂方法模式,到此就学会了。
简单吧!
Java工厂方法模式的更多相关文章
- 设计模式(三)——Java工厂方法模式
工厂方法模式 1 看一个新的需求 披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪 pizza.北京的胡椒 pizza 或者是伦敦的奶酪 pizza.伦敦的胡椒 pizza. ...
- java 工厂方法模式简单实例
工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象. 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究 ...
- Java 工厂方法模式的简单示例
工厂方法模式:也叫工厂模式,属于类创建型模式,工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对象. 目的:是为了把产品的实例化操作延迟到子类工厂中完成,通过工厂子类来决定究 ...
- JAVA工厂方法模式(Factory Method)
1.普通工厂模式 普通工厂模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 1-1.建立Sender接口 public interface Sender { public void ...
- Java 工厂方法模式
在工厂对象上调用创建方法,生成接口的某个实现的对象 通过这种方式,接口与实现分离 方法接口 /** * 方法接口 */ public interface Service { void method1( ...
- Java设计模式(二) 工厂方法模式
本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...
- JAVA设计模式--工厂方法模式
工厂方法设计模式 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的接口或者必须继承的父类.在java中它由抽象类或者接口来实现.具体工厂角色:它含有和具体业务逻辑有关 ...
- Java设计模式3:工厂方法模式
工厂方法模式 工厂方法模式是类的创建模式.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工厂推迟到子类中. 工厂方法模式 工厂方法模式是对简单工厂模式进一步抽象的结果. 假如是不使用反 ...
- java设计模式(二)---工厂方法模式
2普通工厂方法模式 就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建. 2.1创建接口 /** * 发送接口 * Created by mrf on 2016/2/25. */ public ...
随机推荐
- 学习笔记5—Python 将多维数据转为一维数组 (总结)
<code class="language-python">import operator from functools import reduce a = [[1,2 ...
- CxImage透明图片合成和文字叠加
1 CxImage的作用 CxImage将几张图片合成一张图片,在一张底图上添加图片,有些图片是有透明效果的,实现图片之间的透明重叠效果.另外还可以添加文字. (1)背景图片mymix ...
- python 爬虫利器 Beautiful Soup
python 爬虫利器 Beautiful Soup Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文 ...
- Docker用途 & 和tomcat的区别
两者不是同一种类型.1.docker 是容器,tomcat是jsp应用服务器2.tomcat可以安装在物理机上,虚拟机上,也可以安装在Docker上.所以从这个角度讲,Docker也可以看做是一种超轻 ...
- CentOS上安装seafile
一.安装python2.7.14(CentOS7上python默认版本是Python 2.7.5 ,不需要安装)1.安装依赖包[root@web01 ~]# yum -y install zlib z ...
- HDOJ-1156 Brownie Points II 线段树/树状数组(模板)
http://acm.hdu.edu.cn/showproblem.php?pid=1156 在一张二位坐标系中,给定n个点的坐标,玩一个划线游戏(线必须穿过点),Stan先手画一条垂直的线,然后Ol ...
- Bipartite Segments CodeForces - 901C (区间二分图计数)
大意: 给定无向图, 无偶环, 每次询问求[l,r]区间内, 有多少子区间是二分图. 无偶环等价于奇环仙人掌森林, 可以直接tarjan求出所有环, 然后就可以预处理出每个点为右端点时的答案. 这样的 ...
- spring boot(五)Spring data jpa介绍
在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...
- css中伪类与伪元素的区别
一:伪类:1:定义:css伪类用于向某些选择器添加特殊效果. 伪类其实与普通的css类相类似,可以为已有的元素添加样式,但是他只有处于dom无法描述的状态下才能为文档树中的元素添加样式,所以将其称为伪 ...
- CF-517C-思维/math
http://codeforces.com/contest/1072/problem/C 题目大意是给出两个数a,b ,找出若干个数p,使得 SUM{p}<=a ,找出若干个数q使得SUM{q} ...