![7892f3658a2e42ddad99a1e4876a212a.png](https://i-blog.csdnimg.cn/blog_migrate/90bca372b22eb338642b78e81b43f6e9.jpeg)
关注我,每天三分钟,轻松掌握一个java知识点。今天我们要说的,是令人闻风丧胆的面试拦路虎:设计模式。
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
比较讽刺的是,很多面试初级开发的面试官经常会问到设计模式,这就又回到了面试需要工作经验那个经典笑话了。
今天我们要说到的是设计模式中比较好理解的一个设计模式:简单工厂模式。、
简单工厂模式又叫做静态工厂模式,对于它的理解其实我们可以类比现实中的工厂,比如我们想生产几种类型的鞋子,我们可以把这几种鞋子的模板做出来放到工厂中,当市场需要哪个鞋子的时候,我就从工厂对应的模板中生产一个给市场。
对应到java代码中,我们怎么实现上述过程呢?
1.我们先抽象出一个鞋子的抽象类(关于为什么定义抽象类,请看我上一篇文章)。
//抽象出鞋类abstract class Shoes{ public abstract void wear();}
2.然后让不同的鞋子继承这个抽象类。
class Boots extends Shoes{ @Override public void wear() { System.out.println("生产出了马靴"); }}class Sandals extends Shoes{ @Override public void wear() { System.out.println("生产出了凉鞋"); }}
3.创建工厂类,根据传入不同参数(不同的市场要求)创建不同具体产品类(不同的鞋)的实例。
class ShoesFactory { public static Shoes make(String shoesName){ switch (shoesName){ case "Boots": return new Boots(); case "Sandals": return new Sandals(); default: return null; } }}
4.市场通过调用工厂类的静态方法make,传入不同鞋名来获得不同的鞋子
public class SimpleFactory { public static void main(String[] args){ ShoesFactory tShoesFactory = new ShoesFactory (); //市场想要凉鞋 tShoesFactory.make(“Sandals”) //市场想要马靴 tShoesFactory.make(“Boots”) }
以上就是简单工厂的实现方法,那么有的同学要问了,这玩意有什么用?
![be5ca77f7fd7c2db0f0e1978fdbdaba0.png](https://i-blog.csdnimg.cn/blog_migrate/5bda58e876fe7370ef9974d2119e062e.jpeg)
其实这里我只是简单举一个栗子,实际开发中新建产品要比这复杂的多,如果开发人员既要关心业务代码,又要兼顾具体对象的实现,就很容易原地爆炸,工厂方法的好处是让程序员别关心这个对象是怎么来的,需要啥跟我说我给你生产,你就用就完事了,就很方便。
聪明的同学可能就会发现了,不对,你这个工厂太垃圾了,我要是以后要生产新鞋,我不是老得改你这个工厂?还有就是,你上上篇文章说的开闭原则呢,你这个人没有原则的吗?而且你要求全国都只能穿你们工厂的鞋,那万一哪天你们机器坏了,全国人民还不穿鞋了呗?
![8bf0c6f7344241202b52765bc49fe7db.png](https://i-blog.csdnimg.cn/blog_migrate/3b2f44adf2d2f4ad46b78157814997cb.jpeg)
确实,静态工厂有这样很严重的问题,这些问题不能不解决,不解决就不是一个好工厂,这就引出了我下一篇文章要介绍的大咖:工厂方法模式!
预知后事如何,请听下回分解。
创作不易,希望大家多多关注,收藏,评论支持,谢谢大家!