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