http://oldboy-bj.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

http://35java.com/zhibo/forum.php?mod=viewthread&tid=251&extra=page%3D3

 

3、 解决过多依赖实现类问题
 
在该例的测试类Test.java中,通过Fruit apple = new Apple();来获得对象,造成了程序过多的依赖实现类,与实现类过度耦合,学习设计模式后,我们可以考虑采用工厂模式来实现,可对代码进行如下改进:增加工厂类FruitGardener.java,该类的工厂方法如下:
public
static Fruit factory(String fruitType) ...
{
if (fruitType.equalsIgnoreCase("apple")) ...
{
        
return
new
Apple();
    }

else
if (fruitType.equalsIgnoreCase("strawberry")) ...
{
        
return
new
Strawberry();
    }

else
...
{
        
return
null
;
    }

}





增加了水果工厂类后,测试类也要做对应修改,修改后的Test.java的main方法如下:

Fruit apple = FruitGardener.factory("apple");

Fruit strawberry = FruitGardener.factory("strawberry");

 

在进行了对应修改后,测试类大大减少了对水果实现类的依赖,由直接new实现类变成了通过传入字符串来获得需要的实例,工厂模式应用很广泛,例如在现在红得似火的spring也在不少地方用了工厂模式,它本身就是一个很大的bean工厂,不过它在代码上进行了更大的改进,各实现类可以通过配置文件设置。

三、设计模式 –––– 由优秀迈向卓越的阶梯

从以上三个例子中我们可以看出,通过使用设计模式,优化了我们的代码。这样的例子在我们日常的编码过程中有很多,在我们刚开始学习编码时,写这样的代码还说得过去,但随着经验的增长,我们需要更进一步,现有的设计模式给我们提供了解决大多数问题的好方案,当然,在实践的过程中,我们甚至可以探索出新的设计模式,来解决遇到的某类问题。


学习设计模式不是一蹴而就的,很多人叹息设计模式似乎很不错,然而在自己的编码设计生涯中用得极少,我想主要原因是因为对设计模式的学习还不够,还没将其变成属于自己脑袋里的东西,所以当问题变着面孔出现时,认识不到问题的存在,因为不能正确的分析问题、认识问题,当然也不可能很好的解决问题。


还未学习过设计模式或对其知之甚少的程序员们,努力学习设计模式吧,那将使你由一个优秀的程序员(Coder)成为一个卓越的软件设计师(Developer)。

posted on 2011-01-05 19:44  老男孩咖啡  阅读(159)  评论(0编辑  收藏  举报