设计模式——工厂方法
概述
定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
适用性
1.当一个类不知道它所必须创建的对象的类的时候。
2.当一个类希望由它的子类来指定它所创建的对象的时候。
3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
参与者
1.Product
定义工厂方法所创建的对象的接口。
2.ConcreteProduct
实现Product接口。
3.Creator
声明工厂方法,该方法返回一个Product类型的对象。
Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
可以调用工厂方法以创建一个Product对象。
4.ConcreteCreator
重定义工厂方法以返回一个ConcreteProduct实例。
类图2012年4月17日11:39:56
例子
Product
public interface Work {
void doWork();
}
ConcreteProduct
public class StudentWork implements Work {
public void doWork() {
System.out.println("学生做作业!");
}
}
public class TeacherWork implements Work {
public void doWork() {
System.out.println("老师审批作业!");
}
}
Creator
public interface IWorkFactory {
Work getWork();
}
ConcreteCreator
public class StudentWorkFactory implements IWorkFactory {
public Work getWork() {
return new StudentWork();
}
}
public class TeacherWorkFactory implements IWorkFactory {
public Work getWork() {
return new TeacherWork();
}
}
Test
public class Test {
public static void main(String[] args) {
IWorkFactory studentWorkFactory = new StudentWorkFactory();
studentWorkFactory.getWork().doWork();
IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
teacherWorkFactory.getWork().doWork();
}
}
result
学生做作业!
老师审批作业!
允许自由传播,但请保留页脚版权信息
Copyright © 2008 Angus Young
疯狂Java联盟:http://www.crazyjava.org
设计模式——工厂方法相关推荐
- 设计模式 工厂方法_工厂方法设计模式
设计模式 工厂方法 工厂方法模式是流行的创作设计模式之一. 它并不特别依赖于工厂对象来创建对象. 而是要在同一类中使用单独的方法来创建对象. Factory Method模式定义了一个用于创建对象的接 ...
- 设计模式 工厂方法_工厂设计模式–一种有效的方法
设计模式 工厂方法 如您所知,"工厂方法模式"或俗称"工厂设计模式"是"创意设计模式"类别下的一种设计模式. 模式背后的基本原理是,在运行时 ...
- 设计模式 工厂方法_使用工厂方法模式设计最佳实践
设计模式 工厂方法 在前面的"设计模式"示例中,我们解释了当今常用的"工厂"模式. 在本节中,我们将了解具有更多抽象的更高级的解决方案. 该模式称为工厂方法设计 ...
- 4. 星际争霸之php设计模式--工厂方法模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- java 工厂方法_java设计模式-工厂方法模式
1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离" ...
- 设计模式 | 工厂方法模式及典型应用
工厂方法模式 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化.工厂方法模式让一个类的实例化延迟到其子类. 工厂方法模式又简称为工厂 ...
- python工厂模式 django_python设计模式-工厂方法模式
题目:假设你有一个 pizza 店,功能包括下订单.做 pizza,你的代码会如何写呢? def order_pizza(): pizza = Pizza() pizza.prepare() pizz ...
- 工厂方法模式_1天1个设计模式——工厂方法模式
意图 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型. 问题 假设你正在开发一款物流管理应用.1.0版本只能支持处理卡车运输,因此大部分的代码都位 ...
- [设计模式] ------ 工厂方法模式
工厂方法模式 手机厂造手机,肥皂厂造肥皂,药品厂造药品. 假设有一大类对象A1,A2,A3,A4-他们都有一个共同的父类A A1可以想成是手机,A2可以想成肥皂- (下面例子的A1Factory就是手 ...
- JAVA设计模式 - 工厂方法模式
工厂方法模式(Factory Pattern) 是一种创建型设计模式 , 它是Java中最常用的设计模式之一 . 1 . 工厂方法模式的定义 定义一个创建对象的接口 , 让子类决定实例化哪一个类 . ...
最新文章
- 对于正交频分复用的异构网络的理解
- 自动驾驶中实时车道检测和警报
- RSA加密和DH加密
- c# 微服务学习_微服务:学习几个容易混淆的URL注解
- 在IT行业对专业知识的掌握能力
- nodejs实践录:pm2使用
- 早鸟票只剩3天丨为何一定要参加今年的CNCC?
- 鼠标和按键在android 上的识别和区别
- 支付宝包下了9家报纸的头版,竟然是为了……
- 面向对象的程序设计特点
- 使用mustache js模板引擎
- easyswoole验证码的使用
- linux系统中jdk的卸载及安装
- ps2021没法用神经元滤镜,ps2021神经滤镜不能下载
- 2018药品目录匹配_本位码_众联社本位码匹配工具2018版破解版
- 最小采样频率计算公式_音频文件大小计算公式-好文转载
- Mysql中的straight_join
- 下载链接在微信中无法打开的解决方案
- 数据科学与大数据技术和计算机科学与技术哪个好
- DayDayUp:佛说:有果必有因。 黑格尔说:世界上没有无缘无故的爱,也没有无缘无故的恨。
热门文章
- Jenkins 在Windows下插件无法安装问题解决
- js add方法_Vue.js列表过渡
- python列表是顺序表还是链表_Python数据结构与算法(链表使用详解)
- matlab地址结构与转换,matlab数据类型和转换
- D. Beautiful numbers
- js如何将跨域打开的窗口放到最前面_程序员的强迫症-便捷打开常用网站
- mysql 5.6 emoji_让MySQL 5.6支持Emoji表情
- python保存mat文件_python读取文件——python读取和保存mat文件
- 计算机课程在线作业,计算机科学与技术作业答案
- Centos7开放及查看端口