之前在学习设计模式的时候,轻飘飘的就那么过去了,至于人家为什么那么设计,更是说不出个所以然,反而自己私底下还认为越写越麻烦了呢。最近的drp视频学习中再次的接触到了这块的内容,才慢慢的领悟到了其中的精髓。
首先看没有工厂的时候,这时候需要看电视,那好,自己生产一台电视。
看看手画的图:
在客户端的代码则是这样子的:
当然这种无工厂模式在现实生活中也是不大现实的,电视是每个人都能自己生产的吗?
于是,出现了一批专业人士,给他们开一个工厂,让他们专门生产电视。
图大体上是这样子的:
差异:
把之前客户端new电视的那部分放到了工厂里边,客户端只要调工厂,告诉工厂他要什么电视就好了。
客户端的代码:
再看看工厂的代码:
简单工厂出现之后,确实是比之前所有的东西自给自足要方便多了,但是这也有一个潜在的问题出现了,假如我要生产新的电视,我就需要打开这个TVFactory这个类,在原有的基础之上添加新的内容,如果这样做就容易出错。毕竟在现实情况中是多人开发,今天你改改,明天我改改,这个类迟早面目全非。违反了设计模式的基本规则--开闭原则。
那怎么办?
于是工厂方法就出现了。
看图:
那这个跟之前的简单工厂有什么区别呢?
新增加了一个电视工厂类,并且将之前放在tvfactory类中的创建海尔电视和长虹电视分别放在了海尔工厂和长虹工厂里边。
再看看客户端的代码:
总结:这些东西看着挺简单的,但是里头包含的思想确实极其丰富的。无论是分类、抽象、开闭原则等这些都是我在今后的开发过程中不可或缺的原则。当初看这些设计模式的时候,总是雾里看花,那是因为我没有真正的的走入到计算机的世界中。我记得不久之前,老师曾问过我能感受到代码的魅力了吗?我那时候的回答是:不能,至少我还没有感受到实现之后的那种喜悦。可是最近我是真真切切的感受到了编程所带来的魅力了。之前总觉得自己在计算机方面忒别的欠,可最近像是任督二脉被打通了似得,计算机总算是开窍了。呵呵,各位看官,与我同乐吧!