关于简单工厂模式的有关问题

关于简单工厂模式的问题
对于工厂模式的结构已经理解,但是我无法感受到使用工厂模式的优势!

使用以后,代码量没有减少;
使用以后,没有感受到修改量的减少;
唯一让我感受到的就是各种类型的对象在创建时使用了同一种函数,该调用该函数的
时候同样要给该函数发送一个type   code来区分各种对象,因此,使用工厂模式的优势到底在哪??           纳闷……
请高手解说工厂模式如何提高代码扩展性或者代码结构如何改善的

------解决方案--------------------
设计模式的第一原则是针对接口编程,而不是实现
new操作是一个与实现紧密挂钩的操作,如果大量使用new,就会与各种实现紧密偶合
工厂方法返回的是一个接口,操作的是接口,所以各种实现的偶合度会大大降低,只有工厂知道怎么去new一个对象,其他的都不知道
设计不是以减少程序量为目标的,有时候好的设计还会增加程序量
------解决方案--------------------
比如以下应用工厂模式创建产品接口的代码:
ProductFactoryI *pFactoryProduct= ProductFactoryI::GetProductFactoryI();
ProdocutI *pProductI=pFactoryProduct-> CreateProdocut();
和不使用工厂模式和接口创建工厂的代码:
ProdocutImpl *pProduct=new ProdocutImpl();
如果在有一天我想把产品的实现从ProdocutImpl 替换为ProdocutImpl2,则第二种方式所有的客户端代码都需要修改
而第一中则只需要修改工厂实现类的CreateProdocut方法就可以了。



------解决方案--------------------
设计模式不会减少类的个数,用了pattern只会更多,但是由于封装了变化,增加了扩展性,
创建型模式的精髓就是有效的封装了new 操作带来的具体依赖。
例子太多了,只要是良好的设计都会用到abstract factory模式