2012年6月15日 星期五

依賴注入之我說

參考http://www.martinfowler.com/articles/injection.html

當我看完了前面比較常提到的實踐IoC之中的一方法是依賴注入(Dependence Injection),我也比較清楚這一塊,這個pattern算是比較清楚易懂了,他有點像是簡單版的Strategy pattern,說上簡單,其實應該說比較不複雜,其實在程式碼裡面,我們都常常不經意都會用到這些觀念.

我利用action script 3 去試試看Type - 2 的方式(這個方式比較正統點 因spring 很推薦使用)

1.

先設計你要用的interface
我選定的OS來當例子

package self.base 
{

 public interface Ios
 {
  function operating():void;
 }
}
2. 實作Ios interface 的兩個類別 mac.as 和 window.as

package self.abee
{
 import self.base.Ios;

 public class mac implements Ios
 {
  public function mac()
  {
  }

  public function operating():void
  {
   trace("start mac");
  }
 }
}

package self.abee
{
 import self.base.Ios;

 public class windows implements Ios
 {
  public function windows()
  {
  }

  public function operating():void
  {
   trace("start window");
  }
 }
}

3.設定一個給外部使用的介面去把依賴注入設定好
package self
{
 import self.base.Ios;

 public class OSObject
 {
  public var ios:Ios;

  public function set dependenceOS(ios:Ios):void
  {
   this.ios=ios;
  }
 }
}

4. test吧
package
{
 import flash.display.Sprite;

 import self.OSObject;
 import self.abee.mac;
 import self.abee.windows;

 public class testDI extends Sprite
 {
  public function testDI()
  {
   var obj:OSObject=new OSObject;
   obj.dependenceOS=new windows;
   obj.ios.operating();

  }
 }
}
有沒有很簡單 ~~
這就是大家常常掛在嘴巴再說的 注入-依賴
type - 1  , type -3  大同小異 (只是注入的點不一樣) 








沒有留言: