上篇学习了简单工厂模式,趁热打铁看一下工厂方法模式。
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
看到定义我还是不是很懂,就理解了类的实例化可以延迟到子类。查阅了很多资料,看了很多小伙伴们的博客,这才理解了一些。工厂方法是用来制定一些规范,只要求但是不干事的空壳子,消费者要求什么他就制定什么样的要求和方法,但是具体实施对象是其子类,即父亲让孩子干啥孩子就得干啥,就像古代时候包办婚姻似的,家里的要求就是门当户对,不会考虑两个对象是否存在爱情,所以当时结婚男女双方都未见过彼此,直到洞房之夜才直到彼此的模样,大概的理解看来,我感觉工厂方法模式和从前的封建还是有一定关系的。
在大话设计模式这本书中以雷锋依然在人间讲解的,就是具体的类都有自己的工厂,该干什么 都有具体的工厂负责,就像一个父亲有好几个儿子和女儿似的,女儿是要嫁出去的,儿子是用来养老的,并且每个儿子他们分工明确,父亲在老的时候可以在大儿子家居住一个月,二儿子家居住一个月,女儿负责看望,生病的时候看病的钱也需要平分或者按家庭条件来承担。
简单工厂只有一个儿子或者一个女儿,而工厂方法模式就不同了,他多子多孙。下面是我对两种模式的大概理解,不知道对不对。
简单工厂模式:
工厂方法模式:
工厂方法模式实现的方法:
首先创建一个工厂接口:
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">interface IFactory { Operation CreateOperation(); }</span></span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">class AddFactory:IFctory //加法类工厂 { public Operation CreateOperation() { return new OPerationAdd(); } } class SubFactory:IFctory //减法类工厂 { public Operation CreateOperation() { return new OPerationSub(); } } class MulFactory:IFctory //乘法类工厂 { public Operation CreateOperation() { return new OPerationMul(); } } class DivFactory:IFctory //除法类工厂 { public Operation CreateOperation() { return new OPerationDiv(); } }</span></span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">IFactory operFactory=new AddFactory(); //要用到的工厂 Operation oper=operFactory.CreateOperation(); oper.NumberA=1;//给要求 oper.nUmberB=2; double result=oper.GetReault();//输出结果</span></span>
我对工厂方法模式的理解大概就这些了,这都是自己的理解,有很多不足和不正确的地方,希望发现的小伙伴们给我提意见,我好加以改正和进步。