zhyiwww
          用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
          posts - 536,comments - 394,trackbacks - 0

          今天早上公交車上想到的系統(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

          因?yàn)槲覀冊賯鬟f密碼的時候是需要加密和解密的。

          但是,我們的加密和解密方案可能是會改變的。

          那么我們?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://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2007-01-16 11:35 zhyiwww 閱讀(1520) 評論(0)  編輯  收藏 所屬分類: j2ee
          主站蜘蛛池模板: 抚远县| 红原县| 新源县| 昌黎县| 灵台县| 平泉县| 攀枝花市| 富川| 集安市| 雅安市| 永定县| 安陆市| 邯郸县| 综艺| 兰州市| 左权县| 新宾| 南投市| 怀集县| 依安县| 沾化县| 临泉县| 蒙阴县| 宁化县| 临朐县| 额敏县| 富宁县| 周至县| 枞阳县| 鄯善县| 德格县| 奉化市| 洞口县| 泗水县| 电白县| 永城市| 桑植县| 泰宁县| 广水市| 昌吉市| 上犹县|