今天早上公交車上想到的系統(tǒng)的實(shí)現(xiàn)模式
?
?
Author
???? :????? zhyiwww
E-Mail
????? :????? zhyiwww@163.com
Date
????????? :????? 2007-1-16
轉(zhuǎn)載請注明出處
(copyright by @ zhangyi)
?
?
今天早上去上班的時候,在公交車上,我想了一下我們的一部分的實(shí)現(xiàn)方案。
我們有一個對象
User
,定義如下:
public class User{
?????? name;
?????? password;
?
?????? set***
?????? set***
?????? get***
?????? get***
}
這是一個單獨(dú)的
bean
。
因為我們再傳遞密碼的時候是需要加密和解密的。
但是,我們的加密和解密方案可能是會改變的。
那么我們?nèi)绾蝸韺?shí)現(xiàn)呢?
所以我就想,我可以用一個靈活的,可擴(kuò)展的方案來實(shí)現(xiàn)。
?
我聲明了一個接口:
Public interface Security{
?????? //
加密
?????? Void Encrypt();
?????? //
解密
Void crack();
}
我讓上面的
bean
來實(shí)現(xiàn)此接口:
public class User?
implements Security
{
?????? name;
?????? password;
?
?????? set***
?????? set***
?????? get***
?????? get***
??????
?????? //
加密
?????? Void Encrypt(){
}
?????? //
解密
Void crack(){
}
?
}
在此,我們可以看到,加密解密的部分,我們是要自己去實(shí)現(xiàn)的。
但是,實(shí)現(xiàn)對數(shù)據(jù)的加密和解密還是要去調(diào)用這個方法。
所以我們在其初始化的時候就實(shí)現(xiàn)加密:
?
public class User? implements Security{
?????? name;
?????? password;
?
?????? public User(String username,String password){
?????? this.name=username;
?????? this.password=password;
?????? //
對
password
進(jìn)行加密
encrypt();
}
?????? set***
?????? set***
?????? get***
?????? get***
??????
?????? //
加密
?????? Void Encrypt(){
}
?????? //
解密
Void crack(){
}
?
}
?
但是加密如何實(shí)現(xiàn)呢?我們加密可能會采用不同的方案。
那么一種方案是
,我們可以給沒有一個方案單獨(dú)的創(chuàng)建類,然后去實(shí)現(xiàn)加密和解密的方法。
這種方案,我們在實(shí)現(xiàn)的時候,使用哪一種方案都要去修改所有的方案,去實(shí)現(xiàn)對應(yīng)的代碼。可能工作量很大。
另一種方案就是
,使用工廠。
我們使用工廠來決定和實(shí)現(xiàn)使用哪種方案。然后我們重建不同的方案來實(shí)現(xiàn)其功能。
可以通過配置,來決定使用哪種方案。這樣,我們的系統(tǒng)的自由度就大了很多了。
至于工廠詳細(xì)如何實(shí)現(xiàn),在此我就不多說了。
|----------------------------------------------------------------------------------------|
版權(quán)聲明 版權(quán)所有 @zhyiwww
引用請注明來源 http://m.tkk7.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2007-01-16 11:35
zhyiwww 閱讀(1519)
評論(0) 編輯 收藏 所屬分類:
j2ee