`
zhyiwww
  • 浏览: 87322 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

今天早上公交车上想到的系统的实现模式

阅读更多

今天早上公交车上想到的系统的实现模式

<!----> <o:p> </o:p>

<o:p> </o:p>

<o:p> </o:p>

Author      :      zhyiwww<o:p>

E-Mail       :      zhyiwww@163.com<o:p>

Date           :      2007-1-16<o:p>

转载请注明出处 (copyright by @ zhangyi)<o:p>

<o:p> </o:p>

<o:p> </o:p>

<o:p> </o:p>

今天早上去上班的时候,在公交车上,我想了一下我们的一部分的实现方案。

我们有一个对象 User ,定义如下:

public class User{<o:p>

       name;<o:p>

       password;<o:p>

<o:p> </o:p>

       set***<o:p>

       set***<o:p>

       get***<o:p>

       get***<o:p>

}<o:p>

这是一个单独的 bean

因为我们再传递密码的时候是需要加密和解密的。

但是,我们的加密和解密方案可能是会改变的。

那么我们如何来实现呢?

所以我就想,我可以用一个灵活的,可扩展的方案来实现。

<o:p> </o:p>

我声明了一个接口:

Public interface Security{<o:p>

       // 加密 <o:p> </o:p>

       Void Encrypt();<o:p>

       // 解密 <o:p> </o:p>

Void crack();<o:p>

}<o:p>

我让上面的 bean 来实现此接口:

public class User  implements Security {

       name;

       password;

<o:p> </o:p>

       set***

       set***

       get***

       get***

      

       // 加密 <o:p> </o:p>

       Void Encrypt(){<o:p>

}<o:p>

       // 解密 <o:p> </o:p>

Void crack(){<o:p>

}<o:p>

<o:p> </o:p>

}

在此,我们可以看到,加密解密的部分,我们是要自己去实现的。

但是,实现对数据的加密和解密还是要去调用这个方法。

所以我们在其初始化的时候就实现加密:

<o:p> </o:p>

public class User  implements Security{

       name;

       password;

<o:p> </o:p>

       public User(String username,String password){<o:p>

       this.name=username;<o:p>

       this.password=password;<o:p>

       // password 进行加密 <o:p> </o:p>

encrypt();<o:p>

}<o:p>

       set***

       set***

       get***

       get***

      

       // 加密

       Void Encrypt(){

}

       // 解密

Void crack(){

}

<o:p> </o:p>

}

<o:p> </o:p>

但是加密如何实现呢?我们加密可能会采用不同的方案。

那么一种方案是 ,我们可以给没有一个方案单独的创建类,然后去实现加密和解密的方法。

这种方案,我们在实现的时候,使用哪一种方案都要去修改所有的方案,去实现对应的代码。可能工作量很大。

另一种方案就是 ,使用工厂。

我们使用工厂来决定和实现使用哪种方案。然后我们重建不同的方案来实现其功能。

可以通过配置,来决定使用哪种方案。这样,我们的系统的自由度就大了很多了。

至于工厂详细如何实现,在此我就不多说了。



zhyiwww 2007-01-16 11:35 发表评论
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics