日期:2014-05-16  浏览次数:20395 次

模板模式 模仿Spring写的 JdbcTemplate 不懂Spring 没关系 很实用
java 代码
?
  1. 在这里我首先以一个比较简单的小例子让不知道模板模式的人先有个入门的概念。(如果要想深入了解,去看<java与模式>)??
  2. 在后面的例子我将以一个比较实用的例子来说明这种模式给我们带来的好处,并且这个例子很实用。下面我会把所有的代码??
  3. 都贴出来,你可以直接Copy代码就可以运行,如果你已经有啦一定了解,那么就直接看第二个吧。??
  4. 在这里我希望你把它看完,并把它理解。因为开始我在看Spring的源码的时候也是看啦好多次才把思路理清楚的。??
  5. ??
  6. 首先先说说这两个例子的作用,要不然看啦大半天都不知道是什么东西。??
  7. ??
  8. 第一个:?当我们去买东西的时候,东西都会打折,然而每种东西的折扣都不一样。如买Book的时候,书的折扣是?0.8?折??
  9. ????????而当我们去买 Video 的时候,它是 0.7?折,如果这些分类的商品很多的时候。而我们每次都要 在每一个类??
  10. ????????中写一个打折后得到的实际价格的话,那是不是感觉到很累赘。也很不爽。所以我们有必要把它抽象出来。那么??
  11. ????????每个类只要从这个类继承就可以啦。如果重用的方法多的话,那么这就会带来很大的好处.??
  12. ??
  13. ????????看源代码:??
  14. /*?
  15. ?*?这是一个模板方法的抽象类,所有的将要打折的商品都要从它继承?
  16. ?*?那么就会得到getRealPrice()这个模板方法,当然,这里只是为了?
  17. ?*?说明模板方法的用处?
  18. ?*/??
  19. package?com.dongguoh;??
  20. ??
  21. public?abstract?class?Item?{??
  22. ??????
  23. ????protected?abstract?float?getUnitPrice();??
  24. ????protected?abstract?float?getDiscountRate();??
  25. ??????
  26. ????public?float?getRealPrice(){??
  27. ????????return?this.getDiscountRate()*this.getUnitPrice();??
  28. ????}??
  29. ??
  30. }??
  31. ??
  32. package?com.dongguoh;??
  33. ??
  34. public?class?Video?extends?Item{??
  35. ????/*???
  36. ?????*?在实际当中,这些要返回的值应当是从数据库当中去取?
  37. ?????*/??
  38. ????protected?float?getDiscountRate()?{??
  39. ????????return?0.8f;??
  40. <