根据此视频输出本篇blog 【IT老齐189】23种设计模式之工厂模式
工厂模式简介
⼯⼚模式也称简单⼯⼚模式,是创建型设计模式的⼀种,这种设计模式提供了按需创建对象的最佳⽅式。同时,这种创建⽅式不会对外暴露创建细节,并且会通过⼀个统⼀的接⼝创建所需对象。
⼯⼚模式属于创建型模式的⼀种,其⽬的就是隐藏创建类的细节与过程。
在软件开发中,当我们会用到大量的创建某类或者某批对象时,就会使用到工厂模式
问题举例
以电脑店为例,我是⼀个纯⼩⽩,⾯对琳琅满⽬的各种电脑⼀脸懵X,根本⽆从下⼿~
//电脑接口 public interface Computer { public String describe(); } //外星人游戏笔记本 public class Alienware implements Computer{ @Override public String describe() { return "外星⼈ALIENWARE m15 R7 15.6英⼨⾼端游戏本 12代i7 32G RTX3060 QH D 240Hz ⾼刷屏 轻薄笔记本电脑2765QB"; } } //高性能独显PC主机 public class Desktop implements Computer{ @Override public String describe() { return "外星⼈ALIENWARE R13 ⽔冷电竞游戏⾼端台式机 第12代i7 32G 512GB+2 T RTX3070 办公台式机 9776W"; } } //Macbook办公轻薄本 public class Macbook implements Computer{ @Override public String describe() { return "Apple MacBook Pro 13.3 ⼋核M1芯⽚ 8G 256G SSD 深空灰 笔记本电脑 轻薄本 MYD82CH/A"; } } //2U戴尔服务器 public class Server implements Computer{ @Override public String describe() { return "戴尔(DELL) R740⼁R750⼁2U机架式服务器主机双路GPU深度学习 R740〖1*银牌4210R 10核20线程〗 8G内存⼁1TB SATA硬盘 ⼁H350戴尔(DELL"; } }
此时顾客将⾯对⼏⼗种不同性能,不同规格不同种类的电脑,难道顾客必须了解所有细节才能决定使⽤哪⼀个吗?
这⾥就破坏了“迪⽶特法则(知道的越少越好)”,⼤多数客户并不需要了解每⼀台细节,我们要把选择权交还给电脑店这⼀⽅。
控制权在顾客方是不对的
正确的做法
增加⼀个售货员帮助⽤户实现决策,根据客户的不同要求提供对应的产品。
这个售货员就是充当了“⼯⼚”的⻆⾊。
⼯⼚模式的特点:提供⽅法,返回接⼝。
public class ShopAssistant { public Computer suggest(String purpose){ Computer computer = null; if(purpose.equals("网站建设")){ return new Server(); }else if(purpose.equals("电竞比赛")){ return new Desktop(); }else if(purpose.equals("⽇常办公")){ return new Macbook(); }else if(purpose.equals("3A游戏")){ return new Alienware(); } return computer; } }
站在顾客这⼀⽅,获取对象的过程变得⾮常简单,通过售货员这个⼯⼚帮助我们获取需要的对象,同时不再关注对象创建的过程与细节。
public class Customer { public static void main(String[] args) { ShopAssistant shopAssistant = new ShopAssistant(); Computer c = shopAssistant.suggest("网站建设"); System.out.println(c.describe()); } }
项目中的作用