




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
工厂模式 简单工厂通常是一个用来创建其他对象的对象。工厂是构造方法 的抽象,用来实现不用的分配方案。 工厂对象通常包含一个或多个方法,用来创建这个工厂所能创建 的各种类型的对象。这些方法可能接收参数,用来指定对象创建 的方式,最后返回创建的对象。 工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简 单工厂模式是工厂模式家族中最简单实用的模式 代码举 例 /几个Button类 class Button/* .*/ class WinButton extends Button/* .*/ class MacButton extends Button/* .*/ /它们的工厂类 interface ButtonFactory abstract Button createButton(); class WinButtonFactory implements ButtonFactory Button createButton() return new WinButton(); class MacButtonFactory implements ButtonFactory Button createButton() return new MacButton(); 代码案例:有一个BUTTON类表示按钮,另有它的 两个子类WINBUTTON和MACBUTTON分别代表 WINDOWS和MAC风格的按钮,那么这几个类和用于 创建它们的工厂类在JAVA中可以如下实现(在此省 略所有类和方法的可见性设置): 简单工厂模式基本架构 u 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可 以被外界直接调用,创建所需的产品对象。 u 抽象产品(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的 公共接口。 u 具体产品(Concrete Product)角色 是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个 具体类的实例。 适用性 下列情况可以考虑使用工厂方法模式: u创建对象需要大量重复的代码。 u创建对象需要访问某些信息,而这些信 息不应该包含在复合类中。 u创建对象的生命周期必须集中管理,以 保证在整个程序中具有一致的行为。 当每个抽象产品都有多于一个的具 体子类的时候,工厂角色怎么知道实例 化哪一个子类呢?比如每个抽象产品角 色都有两个具体产品。抽象工厂模式提 供两个具体工厂角色,分别对应于这两 个具体产品角色,每一个具体工厂角色 只负责某一个产品角色的实例化。 抽象工厂模式 代码实现 代码内容 定义个人信息 package tw.idv.javax.demo.Interface; import java.util.Calendar; public interface PersonInterface public static final String ROLE = PersonInterface.class.getName(); public abstract String getId() throws Exception; public abstract void setId(String id) throws Exception; public abstract String getName() throws Exception; public abstract void setName(String name) throws Exception; public abstract Calendar getBirthday() throws Exception; public abstract void setBirthday(Calendar birthday) throws Exception; 对个人信息进行实现 package tw.idv.javax.demo.Implements; import java.util.Calendar; import tw.idv.javax.demo.Interface.PersonInterface; public abstract class PersonInterfaceImpl implements PersonInterface private String id = null; private String name = null; private Calendar birthday = null; public String getId() return id; public void setId(String id) this.id = id; public String getName() return name; public void setName(String name) = name; public Calendar getBirthday() return birthday; public void setBirthday(Calendar birthday) this.birthday = birthday; 下一页 代码内容 继承 PersonInterfaceImpl ,写 一个描述孩童基本资料 Children Package tw.idv.javax.demo.Extends; Import tw.idv.javax.demo.Implements.PersonInterfaceImpl; public class Children extends PersonInterfaceImpl 继承 PersonInterfaceImpl ,写 一个描述儿童状况 package tw.idv.javax.demo.Extends; Import tw.idv.javax.demo.Implements.PersonInterfaceImpl; public class Adult extends PersonInterfaceImpl private int income = 0; public int getIncome() return income; public void setIncome(int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第2节 电流说课稿-2025-2026学年初中物理沪科版五四学制2024九年级上册-沪科版五四学制2024
- 第四节 生物学的研究工具说课稿
- Lesson 11 Is this your shirt说课稿-2025-2026学年初中英语第一册 上半册新概念英语
- 第12课 语音合成技术教学设计-2025-2026学年初中信息技术浙教版2020八年级下册-浙教版2020
- 2025年四川省眉山市中考生物试题及答案
- 苏少版一年级音乐上册(简谱)第4单元《唱:不能告诉你》教学设计
- 小学二年段期末考试试卷(2篇)
- 2025年《现代咨询方法与实务》知识考试题库
- 2025年高考数学试题分类汇编:等式不等式试卷+解析
- 2025年暑假高二升高三化学专项复习:阿伏加德罗常数的判断(含答案)
- 《建筑法律知识》课件
- 印刷服务投标方案(技术方案)
- 医疗器械经营质量管理制度、工作程序文件目录
- 美国RAZ分级读物目录整理
- 2019电力建设施工质量验收规程第6部分:调整试验
- 英语10000个单词频率排序
- (完整版)高标准农田建设施工组织设计
- 物体打击事故预防安全培训课件
- 非诚勿扰剧本
- 辽2014G403 预应力混凝土双T扳
- 砂石系统设计
评论
0/150
提交评论