存在就是合理的

会思考的僵尸

诸葛亮与IOC的关系

看过三国志的朋友都知道一句名言:万事具备,只欠东风.
最近在学习SPRING框架的时候对此又有了深层的理解.
最近开发一个几百人的大项目,由于某些因素,不能使用开源框架.我们开发人员商议,准备顺应潮流,使用SPRING框架的某些设计思想来完成工作.
由于大家都没有几百人一起工作的项目经验,所以开始阶段是痛苦而没有成效的.特别在商议相互调用的接口时,简直成了讨价还价的菜市场(每个人的想法,水平,及设计能力的差异).~_~!!!
百无聊赖中,跑去开三国(你们吵你们的吧,我休息先),看到诸葛亮借东风一节,突然灵机一动,这不就是SPRING框架的IOC思想么??我先万事具备再说,只欠东风就OK!想到这里,心中窃喜,于是将需要的接口数据整理出来写了个XML文档,并用DTD定义,直接扔给调用我的家伙,想用我的接口么??我就要这些数据,你看着办吧~~!
于是不管他渴求的表情,自己工作去也.那个心里爽啊~
下面是一些模拟代码,希望能有用:
/*定义依赖注入的数据接口*/
public interface IOCINTERFACE
{
   //只定义一个验证方法,验证DTD定义的数据
   public boolean validate();
}
////////////////////////////////////////////////////////////////////////////////分割线////////////////////////////////////////////////////////////////////////////////////////
/**/
class IOCObject implement IOCINTERFACE
{
   //需要注入的数据
   private String username;
   public void setUsername(String username)
   {
      this.username = username;
   }
   public String getUsername()
   {
      return this.username ;
   }
   //验证一下是否是我要的数据
   public boolean validate()
   {
      if(this.username = null)
      {
         return false;
      }
      return true;
   }
}
////////////////////////////////////////////////////////////////////////////////分割线////////////////////////////////////////////////////////////////////////////////////////
/*再定义一个执行接口*/
public interface OPERATION
{
   public void execute();
}
////////////////////////////////////////////////////////////////////////////////分割线////////////////////////////////////////////////////////////////////////////////////////
class Test implement OPERATION
{
   //定义操作对象
   private IOCObject obj;
   public void Test( IOCObject obj)
   {
      this.obj = obj;
   }
   public void execute()
   {
      if(this.obj.validate)
      {
         //处理业务逻辑
         System.out.println(this.obj.getUsername+"hello!");
      }
      else
      {
         //异常日志
            System.out.println("MB~~~给的什么数据啊~~我叼!")
      }
   }
}
////////////////////////////////////////////////////////////////////////////////分割线////////////////////////////////////////////////////////////////////////////////////////
/*万事具备了,借东风吧!*/
public class Main
{
   public static void main(String[]args)
   {
      //做个东风先
      IOCObject obj = new IOCObject ();
      obj .setUsername("KenIT");
      //依赖注入了,高兴啊!
      Test test = new Test(ob);
      //完成工作,打完收功
      test.execute();
   }
}
////////////////////////////////////////////////////////////////////////////////分割线////////////////////////////////////////////////////////////////////////////////////////
回想来发现IOC就是我们的诸葛老前辈发明的,居然.....,我强烈呼吁收版权税.
中华民族万岁~~~!

posted on 2006-07-31 11:22 KanIT 阅读(963) 评论(4)  编辑  收藏

Feedback

# re: 诸葛亮与IOC的关系 2006-07-31 11:31 f

兄弟挺搞笑的,不错,呵呵!  回复  更多评论   

# re: 诸葛亮与IOC的关系 2006-07-31 14:04 GHawk

这样设计是不是更合适??

class Test implement OPERATION
{
//定义操作对象
//private IOCObject obj;
private IOCINTERFACE obj; //---------------依赖接口而不是类
//public void Test( IOCObject obj)
public Test(IOCINTERFACE obj) //---------------依赖接口而不是类
{
this.obj = obj;
}
public void execute()
{
if(this.obj.validate)
{
//处理业务逻辑
System.out.println(this.obj.getUsername+"hello!");
}
else
{
//异常日志
System.out.println("MB~~~给的什么数据啊~~我叼!")
}
}
}
////////////////////////////////////////////////////////////////////////////////分割线////////////////////////////////////////////////////////////////////////////////////////
/*万事具备了,借东风吧!*/
public class Main
{
public static void main(String[]args)
{
//做个东风先
//IOCObject obj = new IOCObject ();
IOCINTERFACE obj = new IOCObject(); //---------------依赖接口而不是类

obj .setUsername("KenIT");
//依赖注入了,高兴啊!
Test test = new Test(ob);
//完成工作,打完收功
test.execute();
}
}

另外,由接口的实现者来决定接口上的参数,再扔给接口的消费者,未免霸道了些吧,不是很符合DIP。
  回复  更多评论   

# re: 诸葛亮与IOC的关系 2006-07-31 15:22 KenIT

谢谢!受教了~_~  回复  更多评论   

# re: 诸葛亮与IOC的关系 2006-07-31 19:41 jspark

呵呵,好!

有意思,以前看过一篇是关于谈恋爱的设计模式,也挺有趣的  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: