- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式 抽象工厂模式
设计模式 抽象⼯⼚模式
抽象⼯⼚模式
定义:为创建⼀组相关或相互依赖的对象提供⼀个接⼜,⽽且⽆需指定他们的具体
类
类型:创建类模式
类图:
抽象⼯⼚模式与⼯⼚⽅法模式的区别
抽象⼯⼚模式是⼯⼚⽅法模式的升级版本,他⽤来创建⼀组相关或者相互依赖的对
象 他与⼯⼚⽅法模式的区别就在于,⼯⼚⽅法模式针对的是⼀个产品等级结构;⽽
抽象⼯⼚模式则是针对的多个产品等级结构 在编程中,通常⼀个产品结构,表现为
⼀个接⼜或者抽象类,也就是说,⼯⼚⽅法模式提供的所有产品都是衍⽣⾃同⼀个接
⼜或抽象类,⽽抽象⼯⼚模式所提供的产品则是衍⽣⾃不同的接⼜或抽象类
在抽象⼯⼚模式中,有⼀个产品族的概念:所谓的产品族,是指位于不同产品等级结
构 功能相关联的产品组成的家族 抽象⼯⼚模式所提供的⼀系列产品就组成⼀个产
品族;⽽⼯⼚⽅法提供的⼀系列产品称为⼀个等级结构 我们依然拿⽣产汽车的例⼦
来说明他们之间的区别
在上⾯的类图中,两厢车和三厢车称为两个不同的等级结构;⽽2.0排量车和2.4排量
车则称为两个不同的产品族 再具体⼀点,2.0排量两厢车和2.4排量两厢车属于同⼀
个等级结构,2.0排量三厢车和2.4排量三厢车属于另⼀个等级结构;⽽2.0排量两厢车
和2.0排量三厢车属于同⼀个产品族,2.4排量两厢车和2.4排量三厢车属于另⼀个产品
族
明⽩了等级结构和产品族的概念,就理解⼯⼚⽅法模式和抽象⼯⼚模式的区别了,如
果⼯⼚的产品全部属于同⼀个等级结构,则属于⼯⼚⽅法模式;如果⼯⼚的产品来⾃
多个等级结构,则属于抽象⼯⼚模式 在本例中,如果⼀个⼯⼚模式提供2.0排量两厢
车和2.4排量两厢车,那么他属于⼯⼚⽅法模式;如果⼀个⼯⼚模式是提供2.4排量两
厢车和2.4排量三厢车两个产品,那么这个⼯⼚模式就是抽象⼯⼚模式,因为他提供的
产品是分属两个不同的等级结构 当然,如果⼀个⼯⼚提供全部四种车型的产品,因
为产品分属两个等级结构,他当然也属于抽象⼯⼚模式了
抽象⼯⼚模式代码
interface IProduct1 {
public void show();
}
interface IProduct2 {
public void show();
}
class Product1 implements IProduct1 {
public void show() {
System out println(这是1型产品);
}
}
class Product2 implements IProduct2 {
public void show() {
System out println(这是2型产品);
}
}
interface IFactory {
public IProduct1 createProduct1();
public IProduct2 createProduct2();
}
class Factory implements IFactory{
public IProduct1 createProduct1() {
return new Product1();
}
public IProduct2 createProduct2() {
return new Product2();
}
}
public class Client {
public static void main(String[] args){
IFactory factory = new Factory();
factory createProduct1() show();
factory createProduct2() show();
}
}
抽象⼯⼚模式的优点
抽象⼯⼚模式除了具有⼯⼚⽅法模式的优点外,最主要的优点就是可以在类的内部对
产品族进⾏约束 所谓的产品族,⼀般或多或少的都存在⼀定的关联,抽象⼯⼚模式
就可以在类内部
您可能关注的文档
- 计算机课件及资料AQ.pdf
- 计算机英语(第3版)复习刘艺 王春生.pdf
- 计算机考试复习内容.doc
- 计算机辅助安全评价技术在催化裂化装置的应用.pdf
- 计算源于知识与思维的碰撞——浅议计算途径的选择.pdf
- 计算的极限(二):自我指涉与不可判定Comments.doc
- 计算线性分组码汉明距离的遗传算法.pdf
- 计算网络可靠度的容斥原理算法孙艳蕊.pdf
- 计算流体力学进展及其在汽车设计中的应用.pdf
- 计算经典Ramsey数R3q下界的新方法.pdf
- 2025至2030年中国低温印花粘合剂行业发展研究报告.docx
- 2025至2030年中国气动角模机行业发展研究报告.docx
- 2025至2030年中国机械效率测量卡行业发展研究报告.docx
- 2025至2030年中国机罩锁总成行业发展研究报告.docx
- 2025至2030年中国水晶坛罐行业发展研究报告.docx
- 2025至2030年中国汽车悬架性能检验台行业发展研究报告.docx
- 2024年03月[上海]浦发银行浦银理财有限责任公司(筹)春季校园招考笔试历年参考题库附带答案详解.docx
- 2024年03月[山东]2024年中国光大银行济南分行校园招考笔试历年参考题库附带答案详解.docx
- 2024年03月[广东]2024年交通银行广东省分行春季校园招考笔试历年参考题库附带答案详解.docx
- 2025年铰牙模具项目市场调查研究报告.docx
文档评论(0)