当前位置: 首页 > wzjs >正文

淮安涟水网站建设杭州小程序建设公司

淮安涟水网站建设,杭州小程序建设公司,做网站的多少钱,0元开网店目录 一、 啥是工厂方法模式?二、 为什么要用工厂方法模式?三、 工厂方法模式怎么实现?四、 工厂方法模式的应用场景五、 工厂方法模式的优点和缺点六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博…

在这里插入图片描述

目录

    • 一、 啥是工厂方法模式?
    • 二、 为什么要用工厂方法模式?
    • 三、 工厂方法模式怎么实现?
    • 四、 工厂方法模式的应用场景
    • 五、 工厂方法模式的优点和缺点
    • 六、 总结

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!
🌟了解单例模式请看: (一)趣学设计模式 之 单例模式!

这篇文章带你详细认识一下设计模式中的工厂方法模式

一、 啥是工厂方法模式?

想象一下,你开了一家甜品店 🍰,有蛋糕 🎂、饼干 🍪、面包 🍞 三种甜点。如果只有一个厨师,啥都做,那他不得累死?而且万一你想加个新品种,还得让他学新的手艺,太麻烦了!

工厂方法模式就像这样,每种甜点都有自己的专属厨师(工厂),蛋糕厨师只做蛋糕,饼干厨师只做饼干,面包厨师只做面包。这样,每个厨师都专注于自己的领域,而且你想加新品种,只需要招一个新的厨师就行了!

简单来说,工厂方法模式就是:每个产品都有自己的专属工厂,负责创建该产品!

二、 为什么要用工厂方法模式?

  • 职责分离: 每个工厂只负责创建一种产品,职责更清晰。
  • 扩展性好: 添加新的产品类型,只需要添加新的工厂类即可,不需要修改原来的代码,符合开闭原则 👍。
  • 灵活性高: 可以根据需要选择不同的工厂来创建产品。

三、 工厂方法模式怎么实现?

// 1. 定义产品接口
interface Dessert {void show(); // 展示甜点
}// 2. 定义具体的产品类
class Cake implements Dessert {@Overridepublic void show() {System.out.println("我是美味的蛋糕! 🎂");}
}class Cookie implements Dessert {@Overridepublic void show() {System.out.println("我是香甜的饼干! 🍪");}
}class Bread implements Dessert {@Overridepublic void show() {System.out.println("我是松软的面包! 🍞");}
}// 3. 定义工厂接口
interface DessertFactory {Dessert createDessert(); // 创建甜点
}// 4. 定义具体的工厂类
class CakeFactory implements DessertFactory {@Overridepublic Dessert createDessert() {System.out.println("蛋糕工厂正在制作蛋糕! 🍰");return new Cake();}
}class CookieFactory implements DessertFactory {@Overridepublic Dessert createDessert() {System.out.println("饼干工厂正在制作饼干! 🍪");return new Cookie();}
}class BreadFactory implements DessertFactory {@Overridepublic Dessert createDessert() {System.out.println("面包工厂正在制作面包! 🍞");return new Bread();}
}// 5. 客户端使用
public class Client {public static void main(String[] args) {// 创建蛋糕工厂DessertFactory cakeFactory = new CakeFactory();// 生产蛋糕Dessert cake = cakeFactory.createDessert();cake.show(); // 输出:我是美味的蛋糕! 🎂// 创建饼干工厂DessertFactory cookieFactory = new CookieFactory();// 生产饼干Dessert cookie = cookieFactory.createDessert();cookie.show(); // 输出:我是香甜的饼干! 🍪// 创建面包工厂DessertFactory breadFactory = new BreadFactory();// 生产面包Dessert bread = breadFactory.createDessert();bread.show(); // 输出:我是松软的面包! 🍞}
}

解释:

  • Dessert:产品接口,定义了甜点的通用行为(展示自己)。
  • CakeCookieBread:具体的产品类,实现了 Dessert 接口,分别代表蛋糕、饼干和面包。
  • DessertFactory:工厂接口,定义了创建甜点的通用方法。
  • CakeFactoryCookieFactoryBreadFactory:具体的工厂类,实现了 DessertFactory 接口,分别负责创建蛋糕、饼干和面包。
  • createDessert():创建甜点的方法。

输出结果:

蛋糕工厂正在制作蛋糕! 🍰
我是美味的蛋糕! 🎂
饼干工厂正在制作饼干! 🍪
我是香甜的饼干! 🍪
面包工厂正在制作面包! 🍞
我是松软的面包! 🍞

四、 工厂方法模式的应用场景

  • 日志框架: 可以使用工厂方法模式创建不同类型的日志记录器(文件日志、数据库日志等)。
  • 支付系统: 可以使用工厂方法模式创建不同类型的支付方式(支付宝、微信支付等)。
  • 游戏开发: 可以使用工厂方法模式创建不同类型的游戏角色(战士、法师、弓箭手等)。

五、 工厂方法模式的优点和缺点

优点:

  • 职责分离: 每个工厂只负责创建一种产品,职责更清晰。
  • 扩展性好: 添加新的产品类型,只需要添加新的工厂类即可,不需要修改原来的代码,符合开闭原则 👍。
  • 灵活性高: 可以根据需要选择不同的工厂来创建产品。

缺点:

  • 类增多: 需要为每个产品都创建一个工厂类,导致类的数量增多。
  • 复杂度增加: 代码结构相对复杂,理解起来稍微困难。

六、 总结

  • 工厂方法模式为每个产品都定义一个专属的工厂。
  • 每个工厂只负责创建一种产品,职责更清晰。
  • 添加新的产品类型,只需要添加新的工厂类即可,符合开闭原则。
  • 工厂方法模式适用于产品类型较多,且需要灵活扩展的场景。

希望这篇文章能让你彻底理解工厂方法模式! 👍
看完请看:(三)趣学设计模式 之 抽象工厂模式!

http://www.dtcms.com/wzjs/304445.html

相关文章:

  • 文化网站建设网络营销与直播电商就业前景
  • 怎么修改网站模版今日头条搜索优化怎么做
  • 汕头市网站建设公司seo专业技术培训
  • 杭州协会网站建设方案网页推广怎么做的
  • 政府网站建设评论文章网站推广多少钱一年
  • 最热门的网络游戏排行seoaoo
  • 做外贸网站建设百度指数关键词
  • 上海公司买新能源车需要什么条件外贸网站优化公司
  • 亿唐微方网站建设优秀营销软文范例500字
  • 做网站的项目实施方案seo培训网
  • 房山区网站建设什么公司适合做seo优化
  • 什么是网页设计与网站建设seo搜索引擎优化推广
  • 珠海专业做网站的公司青岛排名推广
  • 丹阳网站建设咨询关键词seo优化公司
  • 苏省住房和城乡建设厅网站首页seo企业优化方案
  • 木兰网站建设百度移动权重
  • sns bbs网站建设国际新闻最新消息美国
  • python做网站毕业设计松松软文
  • 网站建设新手教程视频教程口碑营销的缺点
  • django做的购物网站seo诊断分析报告
  • 少儿编程有没有必要学上海优化公司有哪些
  • 免费创建网站带咨询的北海百度seo
  • 佛山美容院网站建设宁波seo推广方式排名
  • 品牌代理网优化大师班级
  • 哪个网站做视频钱多seo营销是什么
  • 找人合伙做网站平台今日新闻 最新消息 大事
  • 班级网站 程序营销培训讲师
  • 临沂 网站推广百度一下你就知道官网
  • 电商网站设计方案上海推广外包
  • 主网站怎么做熊掌号优化建网站软件