对我来说,经典设计模式提到的23种都能读懂,但能真正领会只有一半左右,深入研究并烂熟于心的就7,8种。
对java语言来说,Prototype模式实际上是没有意义的,可以忽略。
和所有知识一样,不能生硬地去死背23种设计模式,但只要编程时用心思考,其实设计模式就像氧气一样自然弥漫在你的周围。
看看,JDK的API中就有很多设计模式在体现:
Iterator(迭代器,没有这东西怎么来遍历千奇百怪的Map,List啊),
InputStream(装饰器,IO包是伟大的设计,伟大就在于decorator模式),
java.lang.reflect.Proxy(动态代理模式,没有这个Spring的AOP就歇菜了),
java.util.Observer(观察者模式,如果你做Swing,不知道这个模式简直是要人怀疑你的智商),
java.security.KeyStore.Builder(Builder模式)
java.security.KeyFactory(工厂模式,这两个模式反映了在加密策略多变又需要统一的情况下应该怎么处理)
——最近在研究加密,所以相关领域了解比较多。
Serlvet(模板模式,还记得init,destory,service方法吗,定义好了servlet执行的流程才能让你写doGet;还有BaseController...),
个人能力不足,在JDK中暂时只能想到这么多,细节太多我不想解释——只要用心看源代码和google,反正我就是这么过来的。
在不同的问题领域,会催生出不同的设计模式和其变种,可以看出在JDK这样的底层API中大多数是创建型的设计模式在起作用,因为它们需要生成复杂对象。而在Web开发领域,远程通讯,文件处理等等各种场合还有很多经典模式在起作用,例如Strategy,外观,命令模式等等,更多的则是多种设计模式叠加的复合模式,例如MVC。
运用之妙,存乎一心,不可能一蹴而就。
还是那句话:慢慢来,其实我也不懂。
2008-1-18补记:
今天想起来,java.util.File.listFiles(FileFilter filter)方法应该算是策略模式了。又是一个可以用闭包杀死的模式。
对java语言来说,Prototype模式实际上是没有意义的,可以忽略。
和所有知识一样,不能生硬地去死背23种设计模式,但只要编程时用心思考,其实设计模式就像氧气一样自然弥漫在你的周围。
看看,JDK的API中就有很多设计模式在体现:
Iterator(迭代器,没有这东西怎么来遍历千奇百怪的Map,List啊),
InputStream(装饰器,IO包是伟大的设计,伟大就在于decorator模式),
java.lang.reflect.Proxy(动态代理模式,没有这个Spring的AOP就歇菜了),
java.util.Observer(观察者模式,如果你做Swing,不知道这个模式简直是要人怀疑你的智商),
java.security.KeyStore.Builder(Builder模式)
java.security.KeyFactory(工厂模式,这两个模式反映了在加密策略多变又需要统一的情况下应该怎么处理)
——最近在研究加密,所以相关领域了解比较多。
Serlvet(模板模式,还记得init,destory,service方法吗,定义好了servlet执行的流程才能让你写doGet;还有BaseController...),
个人能力不足,在JDK中暂时只能想到这么多,细节太多我不想解释——只要用心看源代码和google,反正我就是这么过来的。
在不同的问题领域,会催生出不同的设计模式和其变种,可以看出在JDK这样的底层API中大多数是创建型的设计模式在起作用,因为它们需要生成复杂对象。而在Web开发领域,远程通讯,文件处理等等各种场合还有很多经典模式在起作用,例如Strategy,外观,命令模式等等,更多的则是多种设计模式叠加的复合模式,例如MVC。
运用之妙,存乎一心,不可能一蹴而就。
还是那句话:慢慢来,其实我也不懂。
2008-1-18补记:
今天想起来,java.util.File.listFiles(FileFilter filter)方法应该算是策略模式了。又是一个可以用闭包杀死的模式。
本文探讨了23种经典设计模式的应用,并重点分析了其中几种在Java中的具体实现案例,如Iterator、Decorator、Proxy等,强调了理解设计模式的重要性。
868

被折叠的 条评论
为什么被折叠?



