java 工厂模式的实例详解

工厂方法中的“工厂”和我们平常理解的一样:用于生产产品。
而客户是要和产品打交道,所以工厂方法模式的意义在于把客户和产品分开,达到解耦和更灵活的目的。
一般我们有一个产品的抽象类,然后有几个具体的产品,如下:
//抽象产品角色
public interface Product{
void product();
}
//具体产品1
public class Pro1 implements Product{
@Override
public void product() {
System.out.println("产品1");
}
}
//具体产品2
public class Pro2 implements Product{
@Override
public void product() {
System.out.println("产品2");
}
}
接着客户要购买产品,他不直接和产品接触,而是使用工厂,所以我们有一个工厂:
public class Factory {
public static Product buy(type) {
switch (type) {
case 1:
return new Pro1();
case 2:
return new Pro2();
default:
break;
}
return null;
}
}
客户通过Factory .buy(type);即可购买到自己想要的产品。
————— 这就是 简单工厂模式,又称为 静态工厂方法模式。
如果新增了一款产品,我们多写一个产品类Pro3就可以了,但在工厂上我们要添加新的代码才能生产,这显然不符合“开闭原则(对扩展开放;对修改封闭)”,所以我们把工厂抽象,添加具体的工厂类,由客户选择某一个工厂,如下:
//抽象工厂
public interface Factory {
Product buy();
}
//具体工厂1
public class Factory1 implements Factory {
@Override
public Product buy() {
return new Pro1();
}
}
//具体工厂2
public class Factory2 implements Factory {
@Override
public Product buy() {
return new Pro2();
}
}
当新增了一款产品,我们多创建一个具体的工厂来生产就可以了。但是当产品种类非常多时,会出现大量的与之对应的工厂对象,这并不是我们所希望的。
——— 这就是 工厂方法模式
当产品出现多个抽象时,我们可能会有多个产品接口,这个场景就成了我们所说的
——- 抽象工厂模式
总结:
无论是简单工厂模式,工厂方法模式,还是抽象工厂模式,他们都属于工厂模式,在形式和特点上也是极为相似的,他们的最终目的都是为了解耦。在使用时,我们不必去在意这个模式到底工厂方法模式还是抽象工厂模式,因为他们之间的演变常常是令人琢磨不透的。经常你会发现,明明使用的工厂方法模式,当新需求来临,稍加修改,加入了一个新方法后,由于类中的产品构成了不同等级结构中的产品族,它就变成抽象工厂模式了;而对于抽象工厂模式,当减少一个方法使的提供的产品不再构成产品族之后,它就演变成了工厂方法模式。 所以,在使用工厂模式时,只需要关心降低耦合度的目的是否达到了。
以上就是java 工厂模式的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 工厂模式
# 工厂模式的实例详解
# 设计模型
# 深入理解java三种工厂模式
# Java设计模式之工厂模式(Factory模式)介绍
# java 工厂模式的讲解及优缺点的介绍
# java 单例模式和工厂模式实例详解
# Java设计模式之静态工厂模式详解
# Java设计模式之抽象工厂模式实例详解
# 23种设计模式(2) java工厂模式
# java设计模式之简单工厂模式
# Java设计模式之装饰者模式详解和代码实例
# Java开发中的23种设计模式详解(推荐)
# Java工厂模式定义与用法实例分析
# 多个
# 这就是
# 它就
# 就可以
# 有一个
# 都是
# 他们的
# 会有
# 成了
# 如有
# 但在
# 他不
# 琢磨不透
# 希望能
# 达到了
# 新增了
# 有几个
# 只需要
# 不符合
# 因为他们
相关文章:
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
在线制作视频网站免费,都有哪些好的动漫网站?
如何快速搭建虚拟主机网站?新手必看指南
如何配置支付宝与微信支付功能?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
如何在建站之星网店版论坛获取技术支持?
电商网站制作公司有哪些,1688网是什么意思?
动图在线制作网站有哪些,滑动动图图集怎么做?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
宝塔新建站点报错如何解决?
如何通过WDCP绑定主域名及创建子域名站点?
5种Android数据存储方式汇总
如何注册花生壳免费域名并搭建个人网站?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
建站之星代理费用多少?最新价格详情介绍
如何自定义建站之星网站的导航菜单样式?
网站制作公司,橙子建站是合法的吗?
建站之星如何实现五合一智能建站与营销推广?
简单实现Android验证码
如何快速重置建站主机并恢复默认配置?
详解jQuery中基本的动画方法
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
Swift中循环语句中的转移语句 break 和 continue
济南网站制作的价格,历城一职专官方网站?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
已有域名和空间,如何快速搭建网站?
深入理解Android中的xmlns:tools属性
无锡营销型网站制作公司,无锡网选车牌流程?
模具网站制作流程,如何找模具客户?
南平网站制作公司,2025年南平市事业单位报名时间?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何获取开源自助建站系统免费下载链接?
大连网站设计制作招聘信息,大连投诉网站有哪些?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
建站之星代理如何获取技术支持?
制作网站外包平台,自动化接单网站有哪些?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
常州企业建站如何选择最佳模板?
如何高效利用200m空间完成建站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何解决ASP生成WAP建站中文乱码问题?
如何快速搭建高效WAP手机网站吸引移动用户?
高端云建站费用究竟需要多少预算?
定制建站如何定义?其核心优势是什么?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
*请认真填写需求信息,我们会在24小时内与您取得联系。