亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

OOP Java:beans中的一個小小的事物邏輯

2019-11-18 11:55:34
字體:
來源:轉載
供稿:網友

  傳統上,任何提供商務基本功能的軟件都涉及到了事物邏輯。除了定義為實現標準服務或者應用程序的事物規則的代碼外,你還可以進一步定義事物邏輯的概念。事物邏輯一般與n層系統的中間層相聯系。換句話說,事物邏輯在表示層與數據訪問層之間,如圖A所示。
  圖A
   OOP Java:beans中的一個小小的事物邏輯(圖一)


  事物邏輯組建或者服務一般用來響應表示層的請求、訪問數據層中特定資源以獲取查詢結果,并把查詢結果返回到表示層。事物邏輯組件應該對任何用戶都是一碗水端平的。這就答應它們用一種與客戶無關的方式提供功能。下面,我們將看到javaBean是如何幫助你實現這一點。不過,在這之前,讓我們首先看看什么是軟件組件(software component)以及它與對象(object)的區別。
  有關組件的一個案例
   
  
  軟件組件可以定義為一種自治的、提供外部公共接口、動態可用的(dynamically discoverable)事物過程,軟件組件還可以用來構件其它組件或者應用程序。打個比方,汽車的每個零件(組件)都有明確的目的(過程),只要零件的尺寸和螺孔(接口)符合標準,它就可以用來組裝一輛完整的汽車(其它組件或者應用程序)。
  
  也許舉個例子可以幫助你理解這一點。假設有一家低水平的軟件公司,它有如下的軟件技術:電子表格、文本編輯、圖形編輯工具、拼寫檢測。現在,假如說這些技術中的每一種都有一個對應的公共接口可供其它軟件組件或者應用程序來使用。發揮一下你的想象力,你就會發現把這些技術組合在一起形成一個功能強大的應用程序——例如字處理軟件——并不會花費多少力氣。
  
  你也許會說:“軟件組件與對象或者代碼庫有什么區別?”——這是個不錯的提問。讓我們看看它們之間的區別。
  庫、組件和對象
   
  
  單一的代碼庫是函數調用的一個邏輯上的組合,它們按照與操作系統有關的機器代碼的方式打包到一個可鏈接的文件上。在Java中,庫可能是以打包到一個JAR文件一組靜態方法的形式存在的。由于這些函數調用或者靜態方法對它們所處的環境一無所知,所以它們一般不能維護(與調用它們的客戶代碼有關的)任何一種狀態。例如,Java中的代碼庫(打包為一組靜態方法),看上去可能向代碼清單A所示。
  清單A如下:
  Listing A
  
  
  public class SystemLib {  public static Date getDateTime()  {   return new Date();  }  public static String getOSVersion()  {   return System.get  
  對象把狀態和功能封裝當邏輯單元之中。一個或者多個客戶可以分享同一個對象。對象一般可以提供其中某些狀態數據以及適當的操作。代碼清單B給出了一個表示個人信息的Java對象。
  代碼清單B如下:
  Listing B
  
  
  public class Person {  protected String name;  protected int age;  public Person(String name, int age)  {   this.name = name;   this.age = age;  }  public String getName()  {   return name;  }  public int getAge()  {   return age;  }  public String toString()  {   return "Name: " + name + ", Age: " + age;  } }
  
  
  請注重觀察Person對象是如何提供狀態數據(姓名與年齡)以及對應的一個操作(toString)。這些都是相當基本的。那么軟件組件又有什么好抄作的呢?
  
  軟件組件把對象的概念向前推進了若干步。軟件組件像對象那樣把狀態和操作封裝在同一個邏輯單元之中,但與對象不同,軟件組件還提供了動態可用的接口、屬性和操作的概念。典型的組件還提供了對象的事件概念。讓我們看看如何把Person對象擴展、提升成一個組件,代碼如清單C所示。
  清單C如下:
  Listing C
  
  
  public class Administrator extends Person {  private String rights; 
  private String department; 
  private Vector listeners = new Vector(); 
  public Administrator(String name, int age, String rights, String department)  {
  super(name, age); 
  this.rights = rights; 
  this.department = department;  } 
  public String getRights()  {   return rights;  }  public void setRights(String rights)  { 
  this.rights = rights;   
  fireStateChangedEvent("Rights");  } 
  public String getDepartment()  {   return department;  } 
  public void setDepartment(String department)  {   this.department = department;   fireStateChangedEvent("Department");  }  public void setName(String name)  {   this.name = name;   fireStateChangedEvent("Name");  }  public void setAge(int age)  {   this.age = age;   fireStateChangedEvent("Age");  }  public void addStateChangedListener(StateChangedListener l)  {   if (listeners.indexOf(l) == -1)   {     listeners.add(l);   }  }  public void removeStateChangedListener(StateChangedListener l)  {   listeners.remove(l);  }  private void fireStateChangedEvent(String dataName)  {   for (Iterator iter = listeners.iterator(); iter.hasNext();)   {     StateChangedListener l = (StateChangedListener)iter.next();     l.stateChanged(new StateChangedEvent(this, dataName));   }  }  public String toString()  {   return super.toString()     + ", Rights: " + rights + ", Department: " + department;  } }
  
  Administrator類擴展了Person類,它添加了兩個新的數據(或者說屬性):權利(rights)和部門(department)。Administrator類提供了修改權利和部門屬性的操作。它還添加了改變父類(Person類)的姓名和年齡的操作。Administrator類添加了事件功能,因此有愛好的客戶可以登記為Administrator類事件的接受者,這樣該用戶就可以知曉Administrator組件中的任何狀態改變。
  
  Java中的Bean
  Java編程語言中正式的組件模型是JavaBeans規范。該規范增加了若干個概念以提升Java編程語言中組件的性能。其中的某些概念——屬性、事件以及方法——與其它標準組件模型中的對應概念含義相同。盡管方法的概念對JavaBeans來說并不新鮮,但是JavaBeans模型發布關于方法的信息還是可以使得在設計和運行時發現它們更輕易。
  
  JavaBeans規范引入的最最廣為使用的一個概念(盡管從表面上看這個概念相當的簡單)就是命名方式。命名方式就是用推薦的前綴和后綴來區分方法的簡單標準。例如,JavaBeans規范建議用來任何提供屬性值(狀態數據)的方法的名字應該有前綴get或者is。這樣,提供年齡(age)屬性值的方法應該命名為getAge()。另外,任何修改屬性值的方法的名字都應該以set為前綴。這樣,修改年齡屬性的方法應該命名為setAge()。代碼清單C中的Person類就演示了如何使用這種命名方式。
  
  JavaBeans規范中另一個廣為使用的概念就是任何JavaBeans都要支持串行化(serialization)和具體化(externalization)的要求。這兩個要求都用來處理對象自動寫入存儲器以及從存儲器恢復的能力。串行化一般由java.io包來控制,而具體化的工作大多由單獨的類來控制。
  
  命名方式、串行化、具體化的概念簡潔明了,它們為Java編程語言以及Web應用程序開發環境提供了巨大的動力。讓我們看看幾種在事物邏輯層利用這些JavaBeans概念的方法。
  Beans的事物邏輯層
   
  
  由于JavaBeans必須支持串行化和通用命名方式,所以它們對數據傳輸組件自適應。例如,假設我們在利用銀行系統的組件和服務,那么我們的事物邏輯層就應該考慮諸如帳號、客戶和付款之類的組件。這些組件需要在組件與組件之間、層與層之間傳遞。這個傳遞機制可能需要跨越處理邊界以及機器邊界。為了使得組件可以方便的跨越這些邊界,該組件就需要在電纜傳輸時擁有串行化和解串行化(解串)的能力。由于JavaBeans需要支持串行化,又由于我們可以依靠JavaBeans的通用命名方式,它們可以在過程之間或者層之間動態的串行傳輸以及解串(deserialized),如圖B所示。
  圖B
  OOP Java:beans中的一個小小的事物邏輯(圖二)
  總結
  我們已經介紹了如何用Java以及JavaBeans來建造事物邏輯組件以及中間件的技術。我們將在下一篇文章中介紹Enterprise JavaBeans在與其它資源交互時是如何用來封裝事物邏輯的,并由此進一步展開對事物邏輯組件的討論。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲图片欧洲图片av| 精品久久久久久久久久久久久| 亚洲精品久久久一区二区三区| 亚洲男人天堂网站| 亚洲激情电影中文字幕| 91av网站在线播放| 国产69精品久久久久9999| 中文字幕日韩在线观看| 欧美色播在线播放| 在线看国产精品| 国产视频自拍一区| 国产一区二区三区日韩欧美| 亚洲美女喷白浆| 亚洲欧美在线第一页| 精品毛片三在线观看| 色婷婷**av毛片一区| 欧美激情视频在线免费观看 欧美视频免费一| 国产偷国产偷亚洲清高网站| 亚洲国产精品中文| 亚洲国产高清高潮精品美女| 911国产网站尤物在线观看| 亚洲va电影大全| 亚洲第一区在线观看| 亚洲女人天堂av| 久久电影一区二区| 欧美成人剧情片在线观看| 日韩网站免费观看| 久久久久五月天| 欧美限制级电影在线观看| 成人激情视频小说免费下载| 亚洲成年人在线播放| 国产日产欧美精品| 中文字幕9999| 日韩精品免费视频| 成人在线免费观看视视频| 欧美另类高清videos| 日韩电影中文字幕在线观看| 欧美成人免费一级人片100| 日韩欧美在线播放| 欧美日韩电影在线观看| 欧美视频国产精品| 久热精品视频在线观看一区| 中文日韩在线视频| 一级做a爰片久久毛片美女图片| 色噜噜狠狠狠综合曰曰曰| 97视频在线播放| 97精品欧美一区二区三区| 精品成人69xx.xyz| 欧美丰满少妇xxxxx| 日韩精品视频三区| 色www亚洲国产张柏芝| 91chinesevideo永久地址| 92福利视频午夜1000合集在线观看| 亚洲精品中文字幕女同| 26uuu日韩精品一区二区| 九九热在线精品视频| 亚洲桃花岛网站| 成人在线一区二区| 欧美国产日本高清在线| 成人444kkkk在线观看| 国产69久久精品成人看| 中文日韩在线视频| 91在线免费网站| 亚洲电影av在线| 亚洲国产精彩中文乱码av| 日韩欧美在线视频日韩欧美在线视频| 欧美日韩精品国产| 一道本无吗dⅴd在线播放一区| 亚洲精品成a人在线观看| 国产精品久久久久影院日本| 国产精品69av| 精品久久久久久久久国产字幕| 国产欧美日韩综合精品| 成人h猎奇视频网站| 亚洲码在线观看| 久久777国产线看观看精品| 欧美专区在线视频| 亚洲国产精品电影在线观看| 欧美日韩福利在线观看| 亚洲国产成人精品一区二区| 国产欧美日韩中文字幕在线| 成人黄色片在线| 日韩欧美国产视频| 黑人巨大精品欧美一区二区一视频| 亚洲色图在线观看| 欧美日韩亚洲一区二区三区| 激情亚洲一区二区三区四区| 亚洲国产精品免费| 欧美一区二三区| 亚洲第一色中文字幕| 3344国产精品免费看| 日韩男女性生活视频| 九九精品视频在线观看| 午夜精品久久久久久久99黑人| 欧美大肥婆大肥bbbbb| 性日韩欧美在线视频| 亚洲欧美一区二区三区情侣bbw| 久久中文字幕视频| 日韩av电影在线免费播放| 久久中文精品视频| 国产精品欧美激情| xxxxx成人.com| 久久免费高清视频| 亚洲欧美综合精品久久成人| 欧美国产日韩二区| 亚洲激情视频在线播放| 精品国内产的精品视频在线观看| 亚洲国产精品推荐| 国产精品久久久久av免费| 久久久噜噜噜久久| www日韩中文字幕在线看| 久久久久这里只有精品| 91精品国产高清| 激情av一区二区| 色哟哟亚洲精品一区二区| 夜夜嗨av色综合久久久综合网| 亚洲a中文字幕| 国产91色在线免费| 高清一区二区三区四区五区| 日韩精品欧美激情| 国产精品激情av在线播放| 日韩av综合中文字幕| 色婷婷亚洲mv天堂mv在影片| 国产精品视频免费观看www| 午夜精品久久久久久99热| 日韩在线播放一区| 欧美专区国产专区| 美日韩精品视频免费看| 91精品国产色综合久久不卡98口| 国产在线一区二区三区| 日韩电影在线观看永久视频免费网站| 久久天天躁日日躁| 亚洲最新av网址| 九九热这里只有精品免费看| 日韩成人在线免费观看| 久青草国产97香蕉在线视频| 伊人久久大香线蕉av一区二区| 久99九色视频在线观看| 奇米成人av国产一区二区三区| 日韩av在线一区二区| 亚洲人成电影网站色www| 欧美大片免费观看在线观看网站推荐| 国产成人av在线| 亚洲男人天堂九九视频| 色妞色视频一区二区三区四区| 欧美日韩在线影院| 精品欧美国产一区二区三区| 亚洲精品狠狠操| 久久99久久亚洲国产| 久久精品成人欧美大片古装| 亚洲www视频| 欧美精品性视频| 国产精品第一区| 国产精品久久久久久久久久久久久| 国产亚洲成av人片在线观看桃| 久久福利视频导航| 国产a∨精品一区二区三区不卡| 亚洲欧美精品一区二区| 亚洲精品国产精品国自产观看浪潮| 欧美日韩电影在线观看| 国产一区二区日韩精品欧美精品| 久久久久久噜噜噜久久久精品| 韩国美女主播一区| 91精品国产亚洲|