今天早上公交车上想到的系统的实现模式
<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>
但是加密如何实现呢?我们加密可能会采用不同的方案。
那么一种方案是 ,我们可以给没有一个方案单独的创建类,然后去实现加密和解密的方法。
这种方案,我们在实现的时候,使用哪一种方案都要去修改所有的方案,去实现对应的代码。可能工作量很大。
另一种方案就是 ,使用工厂。
我们使用工厂来决定和实现使用哪种方案。然后我们重建不同的方案来实现其功能。
可以通过配置,来决定使用哪种方案。这样,我们的系统的自由度就大了很多了。
至于工厂详细如何实现,在此我就不多说了。
![94177.html](https://i-blog.csdnimg.cn/blog_migrate/9fa1dfd0df9caeaa81e447e1c88d2874.jpeg)