目录 提出问题:简单工厂模式,把简简单单的一个new,写的这么复杂,到底有什么好? 讲解工厂模式之前,我们先来了解一下工厂是干什么的。 简单来说,就是集中高效的生产商品。 也就是说,在编程中,工厂模式,就是效仿工厂,进行集中、高效实例化对象。(实例化就是生产商品) 首先,咱们先来确定一下要干什么。 1. 创建一个工厂——江南皮革厂(皮革工厂)。 2. 江南皮革厂要生产一些皮制品。 3. 皮制品包括真皮钱包和貂皮大衣。 4. 找个消费者来消费。 江南皮革厂 皮制品要遵守一定的规范——要有名字和价格 皮革制品1——真皮钱包 皮革制品2——貂皮大衣 消费者 如果你不理解Skin 接口为什么可以赋值为Wallet类和Coat类对象,你需要了解一下Java的向上转型知识:https://blog.csdn.net/qq_42909053/article/details/106325632 项目目录结构如下 自己的理解: 1. 如果项目非常非常大。需要多个团队协作开发。 感觉文字叙述,有点说不清,看图吧 这个A团队的锅,让A团队自己背。A团队开发一个中转类。工厂类。 你不需要知道我们开发的有什么类,也不需要知道我们的命名有多么奇葩,你只需要调用接口,输入你想要的东西,工厂就能返回给你。 总结一下就是,调用者不需要知道类到底是怎么实现,怎么命名,和业务逻辑,只管调用就行。 好吧,这个例子是我想破脑袋才想出来的,网上解释很多,但是我现在的水品还不怎么理解。希望有能力的大哥大姐指正,教育。 网上的答案: 1. 实例化对象不用new,用工厂方法代替 我的疑问:本质不还是new?为什么要多加个工厂? 2. 将选择类,创建对象统一管理和控制。从而将调用者和实现类解耦。 我的疑问:这样解耦后有什么好处? 3. 隐藏具体类名,很多类隐藏得很深的,而且可能会在后续版本换掉 我的疑问:隐藏类名干什么?自己后期维护不麻烦吗? 4. 避免你辛苦的准备构造方法的参数 我的疑问:既然能用工厂模式去赋值参数,说明这些参数是默认值,那为什么不直接在实体类里边去声明加赋值?? 我很水,简单工厂模式会写,不会灵活运用,不理解的太多,就不一一摆出来了。继续总结我的简单工厂模式吧。 不满足开闭原则:一个软件的实体应对扩展开放,对修改关闭。 实际情况:实际开发过程中,工厂模式中,简答工厂应用的最多,因为开发简单。虽然不满足开不原则。 代码稍后我会放在码云上,有兴趣的话,可以浏览或下载。
工厂模式是什么?
简单工厂模式小案例
package factory.simpleFactory; public class 江南皮革厂 { public static Skin getSkin(String name) { if(name.equals("真皮钱包")) { return new Wallet("真皮钱包","800¥"); }else if(name.equals("貂皮大衣")) { return new Coat("貂皮大衣","80000¥"); }else { return null; } } }
package factory.simpleFactory; public interface Skin { public void name(); public void pice(); }
package factory.simpleFactory; public class Wallet implements Skin { public String name; public String pice; public Wallet(String name ,String pice) { this.name=name; this.pice=pice; } @Override public void name() { System.out.println("名字:"+name); } @Override public void pice() { System.out.println("价格:"+pice); } }
package factory.simpleFactory; public class Coat implements Skin { public String name; public String pice; public Coat(String name ,String pice) { this.name=name; this.pice=pice; } @Override public void name() { System.out.println("名字:"+name); } @Override public void pice() { System.out.println("价格:"+pice); } }
package factory.simpleFactory; public class Consumer { public static void main(String[] args) { Skin wallet = 江南皮革厂.getSkin("真皮钱包"); wallet.name(); wallet.pice(); Skin coat = 江南皮革厂.getSkin("貂皮大衣"); coat.name(); coat.pice(); } }
提出问题:简单工厂模式,把简简单单的一个new,写的这么复杂,到底有什么好?
总结一下简单工厂模式的缺点:
代码
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算