麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

數據庫中數據項變化不定,如何設計Java Beans(2)

2019-11-18 13:44:28
字體:
來源:轉載
供稿:網友

  數據庫中數據項變化不定,如何設計java Beans(2)

2.1.2 相關屬性

   相關屬性是這樣的一種屬性,它的改變能以事件的形式通知給對它感愛好的部分,即事件收聽者或目標。很明顯,這種屬性的作用在于它能使收聽者接到其改變事件后根據其中的信息產生一些行為,從而達到兩者之間的默契。相關屬性的訪問者方法遵循與簡單屬性相同的形式,就是說單從訪問者方法是看不出其與簡單屬性的區別,但它要另外的附加類或接口以及事件的傳播機制的支持(后面,我們會看到這同樣適用于約束屬性)。
   實現一個關聯屬性涉及到三方,源Bean,目標Bean和協調代碼:

   ·源Bean

   源Bean必須提供屬性變化事件監聽器的注冊和解冊入口:

public void addPRopertyChangeListener (propertyChangeListener pcListener){}
public void removepropertyChangeListener (propertyChangeListener pcListener){}
   如只想通知目標Bean某個特定屬性的變化,可用下面特定屬性的注冊和解冊方法:

public void add<屬性名>Listener (propertyChangeListener pcListener){}
public void remove<屬性名>Listener (propertyChangeListener pcListener){}
   這樣,目標Bean只會接到源Bean此屬性的變化的事件通知,減少了不必要的信息通信。另外,為了實現關聯屬性的方便,系統提供了一個幫助者類propertyChangeSupport,源Bean可實例化這個幫助者類,讓它來為我們治理和維護收聽者列表以及屬性變化事件的通知的觸發等工作。

   ·目標Bean

   目標Bean除了要實現propertyChangeListener接口外,還要用源Bean提供的注冊方法注冊自己。這樣,目標Bean的實現大體框架如下:
public class targetBean implements propertyChangeListener{
protected SourceBean source;
……
source=new SourceBean();
source.addpropertyChangeListener(this);
public void propertyChange(propertyChangeEvent e){
……
}
}
   ·協調代碼

   協調代碼的工作職責分為以下幾步:

   a 負責創建源Bean和目標Bean;

   b 利用源Bean的屬性變化事件監聽器的注冊入口注冊目標Bean;

   c 改變源Bean的屬性的屬性

   d 利用源Bean的屬性變化事件監聽器的解冊入口解冊目標Bean;

· 2.1.3 約束屬性

   約束屬性是Beans所支持的最復雜最高級的屬性,它答應收聽者對屬性的改變提出否定意見。

   與相關屬性類似,其設計與實現也要涉及到源Bean、目標Bean和協調代碼。只要把相關屬性設計中的property改成Vetoable(除了propertyChangeEvent外),不同的是為了能使目標Bean"反對"源Bean屬性的變化。Beans提供了一種異常propertyVetoException,只要目標Bean收到屬性改變的事件通知后,查看屬性的新值,假如不滿足,可拋出一個異常,讓源Bean放棄改變屬性到這個新值的念頭,這就是約束屬性中給目標Bean增加的"反對權利"。下面的簡單源Bean和目標Bean的偽代碼表述了約束屬性的實現視圖。

   ·源Bean



public class SourceBean {
public void addVetoChangeListener (VetoChangeListener vpListener){}
public void removeVetoChangeListener (VetoChangeListener vpListener){}
   /*由于屬性設置器本身不想處理異常,所以我們拋出異常,當然你也可以在屬性設置器處理異常,屬性變化監聽者對屬性的變化作出同意還是反對就是通過拋出異常的實現的。*/

public void setName(String n) throws propertyVetoException{
/*從下面目標的代碼可能拋出一個異常從而終止代碼的執行
*/
實例化一個propertyChangeEvent對象
執行屬性變化監聽者的vetoChange方法
/*假如上面的代碼拋出異常,下面這行代碼不會被執行,
也就是說監聽者阻止了屬性的變化
*/
name=n //修改屬性的值
}
}

上一篇:探索String 類

下一篇:算術運算符

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产一级性生活视频 | 免费黄色大片在线观看 | 亚洲网站免费观看 | 一区国产精品 | 国产正在播放 | 国产亚洲精品久久久久久久久久 | 毛毛片在线看 | 欧美精品一区二区视频 | 91在线视频免费观看 | 末成年女av片一区二区 | 久久丝袜脚交足黄网站免费 | 成人18在线 | 视频一区国产 | 日本在线免费观看视频 | 欧美性生视频 | 久久精品电影网 | 1024亚洲天堂 | av久草 | 色视频欧美 | hdhdhd69ⅹxxx黑人 | 日本大片在线播放 | 曰本三级日本三级日本三级 | 91香蕉影视 | 精品国产一二区 | 石原莉奈日韩一区二区三区 | 狠狠干最新网址 | 国产午夜精品视频免费不卡69堂 | 91午夜视频 | 9191色| 久久久亚洲欧美综合 | 911网站大全在线观看 | 全免费午夜一级毛片真人 | 九一免费国产 | 草免费视频 | 激情在线免费观看 | 国产视频在线观看一区二区三区 | 私库av在线免费观看 | 久久影院yy6080 | 欧美日韩免费一区 | 国产五区| 国产精品久久久免费 |