Why do we need Creator pattern?
相信很多初学者会有这么一个问题, 为什么我们需要创建者模式?
然而很多人在向别人介绍创建者模式的时候, 常常对于这个问题一带而过.(比如我的老师).
回答: 创建者模式是用来创建对象的模式. 而模式是前人经验的总结,所以创建者模式是一个好东西.
Do you need answer like this? What can we learn about Creator Pattern From this ?
首先对我来说这不是我需要的答案, 并且从中我也仅仅知道了创建者模式是用来创建对象的模式. (晕, 你读读这句话不是废话嘛)
那么我的答案是什么?
用代码说明问题. (源代码有时胜过千言万语)
首先创建了一辆奔驰.
Car car=new Benze();
突然我们的车变了, 变成宝马了. Ok 我修改一下.
Car car=new BMW();
设想一下在我们的代码中散布了无数这样的代码.不止一处(这点很重要)
那么当你以后需要换车的时候, 是不是需要一一修改我们的创建代码把Benze改成BMW.
然后我们再用工厂来实现一下:
Car car=benzeFactory().Factory();
呵呵 这算什么? 没事找事做. 如果要换车,你不是还要修改原来的代码改成下面这样.
Car car=bmwFactory().Factory();
是吗?
如果创建代码只有这里一处可能是这样, 但是如果很多地方都要创建的话就不是了.
CarFactory carFac=new BenzeFactory();
Car car=carFac.Factory();
当你需要换Car的时候你只需修改一处代码就是CarFactory carFac=new XXXFactory();
其他创建车的地方,永远不变,还是Car car=carFac.Factory();
Ok? 你明白了吗?
我们很难避免修改, 但是我们要尽量做到只修改一处.