技术开发 频道

从优秀迈向卓越 -- 我的设计模式学习感悟

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)。
0
相关文章