我与大话设计模式之代码篇(二)----工厂方法模式

上篇学习了简单工厂模式,趁热打铁看一下工厂方法模式。


    工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。


    看到定义我还是不是很懂,就理解了类的实例化可以延迟到子类。查阅了很多资料,看了很多小伙伴们的博客,这才理解了一些。工厂方法是用来制定一些规范,只要求但是不干事的空壳子,消费者要求什么他就制定什么样的要求和方法,但是具体实施对象是其子类,即父亲让孩子干啥孩子就得干啥,就像古代时候包办婚姻似的,家里的要求就是门当户对,不会考虑两个对象是否存在爱情,所以当时结婚男女双方都未见过彼此,直到洞房之夜才直到彼此的模样,大概的理解看来,我感觉工厂方法模式和从前的封建还是有一定关系的。


    在大话设计模式这本书中以雷锋依然在人间讲解的,就是具体的类都有自己的工厂,该干什么 都有具体的工厂负责,就像一个父亲有好几个儿子和女儿似的,女儿是要嫁出去的,儿子是用来养老的,并且每个儿子他们分工明确,父亲在老的时候可以在大儿子家居住一个月,二儿子家居住一个月,女儿负责看望,生病的时候看病的钱也需要平分或者按家庭条件来承担。


    简单工厂只有一个儿子或者一个女儿,而工厂方法模式就不同了,他多子多孙。下面是我对两种模式的大概理解,不知道对不对。


简单工厂模式:


我与大话设计模式之代码篇(二)----工厂方法模式_第1张图片


工厂方法模式:


我与大话设计模式之代码篇(二)----工厂方法模式_第2张图片


工厂方法模式实现的方法:


首先创建一个工厂接口:


interface IFactory
{
    Operation CreateOperation();
}


然后创建具体工厂去实现这个接口。这里还是以加减乘除来举例:


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(); 
   }
}


客户端代码主要就是利用接口调用具体的工厂就行,用到谁就喊谁:


IFactory operFactory=new AddFactory(); //要用到的工厂
Operation oper=operFactory.CreateOperation();
oper.NumberA=1;//给要求
oper.nUmberB=2;
double result=oper.GetReault();//输出结果


    我对工厂方法模式的理解大概就这些了,这都是自己的理解,有很多不足和不正确的地方,希望发现的小伙伴们给我提意见,我好加以改正和进步。




你可能感兴趣的:(【设计模式学习】)