工厂模式的理解

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? 你明白了吗? 

 

我们很难避免修改, 但是我们要尽量做到只修改一处. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值