- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
?
?
《设计模式(五)之
抽象工厂模式》
?
?
一、情景
上一篇博客中【设计模式(四)之——工厂模式】介绍了我们的隔壁老王,用工厂模式制作了一个面包机,开始了面包的销售。现在老王想着推出另外一个新产品冰淇淋,并与面包组合卖一个新的产品
二、后续
我们那位扫地高僧很快也就给了解决方案:采用抽象工厂方法
三、抽象工厂(Abstract Factory)
定义:提供一个接口,用于创建相关或依赖的产品家族,而不需要指定具体的类。
重要组件
AbstarctFactory 声明一个创建抽象产品对象的操作接口
ConreteFactroy 具体的创建产品组的方法
ProductA ProductB 不同的抽象产品,组合起来形成产品家族
类图:
四、代码演示
4.1 定义面包接口、冰淇淋接口(两个产品)
/**
* @author liuzihao
* @create 2020-12-12-22:49
* 抽象产品A (面包)
*/
public interface IbreadProductA {
String desc();
}
/**
* @author liuzihao
* @create 2020-12-12-22:50
* 抽象产品B 冰淇淋
*/
public interface IceCreamProductB {
String desc();
}
4.2 具体的产品
黑面包、荞麦面包
奶油冰淇淋、抹茶冰淇淋
/**
* @author liuzihao
* @create 2020-12-12-22:54
*/
public class BreakBread implements IbreadProductA{
@Override
public String desc() {
return 黑面包;
}
}
/**
* @author liuzihao
* @create 2020-12-12-22:55
*/
public class BuckaBread implements IbreadProductA{
@Override
public String desc() {
return 荞麦面包;
}
}
public class CreamIce implements IceCreamProductB{
@Override
public String desc() {
return 奶油冰淇淋;
}
}
public class MatchaIce implements IceCreamProductB{
@Override
public String desc() {
return 抹茶冰淇淋;
}
}
4.3 抽象工厂(生产一系列相关接口)
/**
* @author liuzihao
* @create 2020-12-12-22:59
* 抽象工厂,生产两种商品
*/
public interface AbstractFactory {
IbreadProductA creatProductA();
IceCreamProductB creatProductB();
}
4.4 工厂1生产 ( 黑面包…奶油冰淇淋)
public class ConcreteFactroy1 implements AbstractFactory{
@Override
public IbreadProductA creatProductA() {
return new BreakBread();
}
@Override
public IceCreamProductB creatProductB() {
return new CreamIce();
}
}
4.5 工厂2生产(黑面包…抹茶冰淇淋)
public class ConcreteFactroy2 implements AbstractFactory{
@Override
public IbreadProductA creatProductA() {
return new BreakBread();
}
@Override
public IceCreamProductB creatProductB() {
return new MatchaIce();
}
}
4.6 测试
您可能关注的文档
最近下载
- 2025年学历类自考专业(学前教育)教师职业道德与专业发展-学前教育研究方法参考题库含答案解析.docx
- 气泡混合轻质土专项的方案(1).docx VIP
- 物流管理论文选题题目范文借鉴.pdf VIP
- 马克思主义新闻观教程 第2版 课件全套 第0--15章 绪章、马克思和恩格斯的生平与新闻活动---新闻舆论.pptx
- 小学英语自然拼读 77页.pdf
- 项目部环境保护管理制度.pdf VIP
- 部编人教版八年级上册历史全册教学设计(配2025年秋改版教材).docx
- 22G101 三维彩色立体图集.docx VIP
- (正式版)JC-T 60021-2024 石膏基自流平砂浆应用技术规程.pdf VIP
- SJ∕T 11763-2020 半导体制造设备人机界面规范.pdf
文档评论(0)