本文首发自「慕课网」(www.imooc.com),想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"或慕课网公众号!
作者:李一鸣 | 慕课网讲师
工厂模式是平时开发过程中最常见的设计模式。工厂模式解决类的实例化问题,它属于创建型模式。工厂模式也经常会和其他设计模式组合使用。
试想你去麦当劳买一个汉堡。你只需要告诉收银员要一个xx汉堡。过一会就会有一个此类型的汉堡被制作出来。而你完全不需要知道这个汉堡是怎么被制作出来的。这个例子中你就是客户端代码,麦当劳就是工厂,负责生产汉堡。汉堡是接口,而具体的某一种汉堡,比如说香辣鸡腿堡,就是实现了汉堡接口的类。
我们继续通过另外一个例子,深入理解工厂模式。现在我们给某款音乐软件开发一个推荐功能。需求是能够根据用户选择的音乐风格,推荐不同风格的歌曲清单。那么你打算怎么实现呢?
1. 音乐推荐器1.0版本
如果之前没有学习过设计模式,很可能你的实现会是这样。编写 RecommendMusicService
类,里面有一个 Recommend方法。根据输入的风格不同,执行不同的推荐逻辑。代码如下:文章来源:https://www.toymoban.com/news/detail-467474.html
public class RecommendMusicService {
public List<String> recommend(String style) {
List<String> recommendMusicList = new ArrayList<>();
if ("metal".equals(style)) {
recommendMusicList.add("Don't cry");
} else if ("country".equals(style)) {
recommendMusicList.add("Hotel california");
} else if ("grunge".equals(style)) {
recommendMusicList.add("About a girl");
}else {
recommendMusicList.add("My heart will go on");
}
return recommendMusicList;
}
}
是不是觉得 recommed 方法太长了? OK,我们重构下,把每种音乐风格的推荐逻辑封装到相应的方法中。这样推荐方法就可以复用了。文章来源地址https://www.toymoban.com/news/detail-467474.html
public class RecommendMusicService {
public List<String> recommend(String style) {
List<String> recommendMusicList = new ArrayList<>();
if ("metal".equals(style)) {
recommendMetal(recommendMusicList);
} else if ("country".equals(style)) {
recommendCountry(recommendMusicList);
} else if ("grunge".equals(style)) {
recommendGrunge(recommendMusicList);
}else {
recommendPop(recommendMusicList);
}
return recommendMusicList;
}
pri
到了这里,关于程序员必修必炼的设计模式之工厂模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!