Archive for 10月, 2008

小探设计模式(三)

星期一, 10月 13th, 2008

抽象工厂

简单工厂解决了对象创建过程和创建逻辑的封装,工厂方法则采用“分而治之”的思想把规模比较大的工厂类分布到各个工厂之类解决。简单工厂和工厂方法模式都是解决了单一产品等级对象创建问题。实际解决问题的时候经常会出现需要创建一系列互相依赖的对象,如果采用工厂方法模式则可能出现创建多个产品额外需要实例化多个工厂类,抽象工厂解决这一问题。

还是使用War3举例(此问题只考虑目标对象,不考虑单位独立性问题,不考虑单位的生产成本和实战问题),NE有角鹰骑士,让AC坐在角鹰背上,一般情况下需要创建一个角鹰其实需要一棵BR然后建一个AC,还需要一棵BW,出一个角鹰,然后要让AC学会骑鸟,显然成本比较高。Orc也有个骑鸟的,双足飞龙,但是它的“驾驶员”和“飞龙”是同时在兽栏被创建,玩家不必为驾驶员和飞龙各自建立工厂,也不必介意那只兽人是如何骑到飞龙上面的,兽栏已经为你做好了一切。

Windrider在创建模式上是一个抽象工厂,但在这里同时也是一个战斗单位,所以要实现战斗单位的接口。兽栏(Beastiary)作为工厂方法引导双足飞龙创建。

战斗单位和工厂的借口就不重复写了。

  1. //Beastiary.java
  2. package warunit;
  3.  
  4. public class Beastiary implements IWarFactory {
  5.  
  6. public IWarUnit train(String type){
  7. if(type.equalsIgnoreCase("windrider")){
  8. return new Windrider();
  9. }
  10. return null;
  11. }
  12. }
  13.  
  14. //Orcman.java
  15. package warunit;
  16.  
  17. public class Orcman implements IWarUnit {
  18.  
  19. public Orcman(){
  20. this.born();
  21. }
  22.  
  23. public void born(){
  24. System.out.print("Ready to soar Master!\n");
  25. }
  26. }
  27.  
  28. //Dragon.java
  29. package warunit;
  30.  
  31. public class Dragon implements IWarUnit {
  32.  
  33. public Dragon(){
  34. this.born();
  35. }
  36.  
  37. public void born(){
  38. System.out.print("Ah~\n");
  39. }
  40. }
  41.  
  42. //AbstractFactory.java
  43. package warunit;
  44.  
  45. public class AbstractFactory {
  46.  
  47. IWarUnit rider;
  48. IWarUnit flyer;
  49. }
  50.  
  51. //Windrider.java
  52. package warunit;
  53.  
  54. public class Windrider extends AbstractFactory implements IWarUnit {
  55.  
  56. public Windrider(){
  57. this.rider=new Orcman();
  58. this.flyer=new Dragon();
  59. }
  60. }
  61.  
  62. //Main.java
  63. import warunit.*;
  64.  
  65. public class Main {
  66.  
  67. public static void main(String[] args){
  68. IWarFactory BE=new Beastiary();
  69. BE.train("windrider");
  70. }
  71. }

听楷叔讲古

星期日, 10月 12th, 2008

记得“细路哥”嗰阵,电视除了动画片都系D无趣嘅节目(细路哥嘅想法)。于是电台成为饭台时间嘅唯一娱乐。中午听三国,夜晚听水浒,总有一个台会出现楷叔的嗰把熟悉的声音,张悦楷、梁锦辉、颜志图、林兆明,一个个”讲古佬“,为我嘅童年增添唔少趣味。

嗰时曾经幻想过成为收音机里面嘅讲古老,屋企冇人嘅时候翻出老窦嘅旧书,用录音机同英语书配套嘅录音带模仿,”前文再续 啊(轻声) 书接上一回“ ,学住楷叔嘅语调,照板煮碗,”欲知后事如何,听日再讲……“,之后不断重播。

虽然未必会读返嗰D古仔嘅原著,单系模仿嘅过程中都间接促使我读左几本小说《清史演义》《说岳全传》就系嗰时睇嘎啦,讲返转头,呢班”讲古佬“其实系我阅读嘅启蒙老师。

今日再听楷叔讲三国,古仔依旧,物事全非,楷叔唔系度了,但古仔依旧陪伴大家,依家D细路哥有咁多玩具,有游戏机唔知仲有几多个会到时到候打开收音机听古仔呢?今次用广州话写作感觉好亲切,只有真正嘅母语先可以表达咁地道嘅题材。

牛一了

星期三, 10月 1st, 2008

不知不觉人生走过了第24个春秋,嗯……放个歌吧。

懐かしい未来——alan

吹いて渡る 风のように 自由でいたい
化身晓岚 乘风翱翔 神往自由 无拘无束

同じ空の 下に生きる 息吹きのように
天地之间 万物共生 绿意盎然 充满生机

北のオーロラ 森の嗫き 梦を见た
北之极光 森之密语 奇幻幽景 浮现梦境

川の清々凪ぎ 升る太阳 朝が来る
清风掠水 轻泛涟漪 旭日东升 恭迎朝霞

爱しいすべてを抱きしめて
万物皆美 拥抱世间

旅立つ时は 懐かしい未来
即将启航 眷顾未来

勇気を希望をありがとう
对于这被赋予的勇气和希望 满怀感激之情

美しい星の上で
(因为我们便生活在这) 美丽的星球之上

爱しいすべてを抱きしめて
万物皆美 拥抱世间

旅立つ时は 懐かしい未来
即将启航 眷顾未来

たくさんの色に溢れてる 美しい星の上で
万物的绚烂色彩 充溢展现于这个美丽的星球之上

きっと贵方へと届けたい
衷心期盼能将此刻的心绪 亲手传递给世间的每一个人

翼に乗せて しなやかな声を
便用这乘风之双翼 柔美的风语

皆が共に生きて行こう
愿世间万物 和谐永生

美しい星の上で
就在这美丽星球之上

この苍い星の上で
就在这蓝色星际之间