用简单的语言解释一下什么叫工厂方法? 到底有什么用?
A
每个月1号是happy家庆祝的日子,因为是happy father发工资的日子.
happy father:"今天饭真香."
happy mother:"肉多就香,儿子这50块是你这个月的零花钱!"
happy father:"记住不许去网吧,那地方总着火!"
情景解释:happy mother把零花钱给儿子,至于他怎么花,什么时候花买什么东西有儿子做主.
B
LZ 有时候吃 康师傅方便面,统一方便面,.... 但吃的时候都要自己去煮
我给LZ做了台机器叫煮方便面机,LZ把这些方便面放里面,想吃康师傅按1,想吃统一按2....
自动给LZ煮好出来了
C
请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
D
这么笼统的说让一个其他对象代替你干事情,好像所有的模式都是干这个事情的,应该把范围限制一下:
主要是用在创建实例的时候使用,比如你在客户端,有一个接口要你调用,有很多类实现了这个接口,你想使用这个接口的时候必须指明new 的是哪一个类 ,就是 接口 I = new 类名。这个时候问题来了,你根本就不知道类名,或者你不想在你的这个里面直接指定类名,这个时候,如果有一个专门生成实例的工厂有多好啊,你向它提出要求生成的实例,然后他给你返回对象的实例。这样客户端和具体类之间耦合性减低,内聚性增强。
E
打个比方,你是一个初创IT公司的CEO,公司目前处于不断的发展阶段,需要不停的招各方面的人才,如程序员,系统设计师,后勤人员,管理人员,财务人员,你开始的做法是你亲自干这件事情,你不停的拟定标准,然后和人员面试,决定选人。哪天,你突然意识到你可以制定一个人去专门干这件事情,而你可以腾出更多的精力考虑公司的发展,于是你指定了一个HR经理,此后,你需要哪方面的人,你不再需要做这方面的事情,你可以叫来HR经理,告诉他你要一个“财务人员”,并告诉一些基本要求,然后HR经理会帮你选定符合标准的人才。这个例子中的HR经理就是工厂模式。
我觉得有些模式你看不懂是正常的,但是如果你在写程序的时候认真思考一些问题,你会触类旁通的。一个人写的程序的过程与一个公司的发展我觉得一定程度上是类似的,一开始,你的程序或者你的公司处于起步阶段,啥事情都需要你总经理做,啥功能都需要你一行行写,随着经验的提高,你会觉得一些重复写的功能我可以把他封装一下,避免重复CODING,我还可以把他写的更灵活,适应于各种情况,这就是模式,对于公司,一样,等到公司发展到一定程度,各个职能的部门都建立起来了,负责各自职能的一块,你作为总经理会觉得轻松了许多,也会有更多的时间关注在公司发展上面了。