代理模式,適配器模式,遠程方法調(diào)用案例實驗報告_第1頁
代理模式,適配器模式,遠程方法調(diào)用案例實驗報告_第2頁
代理模式,適配器模式,遠程方法調(diào)用案例實驗報告_第3頁
代理模式,適配器模式,遠程方法調(diào)用案例實驗報告_第4頁
代理模式,適配器模式,遠程方法調(diào)用案例實驗報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、代理模式,適配器模式,遠程方法調(diào)用案例實驗報告 精品文檔,僅供參考代理模式,適配器模式,遠程方法調(diào)用案例實驗報告 軟件設(shè)計與體系結(jié)構(gòu) 實 實 驗 報 告 課程名稱 軟件設(shè)計與體系結(jié)構(gòu) 課程編號 0920116 實驗項目名稱 代理模式,適配器模式,遠程方法調(diào)用案例 學(xué)號 班級 姓名 專業(yè) 學(xué)生所在學(xué)院 指導(dǎo)教師 實驗室名稱地點 實驗時間 實驗名稱: 代理模式,適配器模式,遠程方法調(diào)用案例 實驗?zāi)康模捍砟J?,適配器模式,遠程方法調(diào)用案例(Observer Pattern)是設(shè)計模式中行為模式的一種,它解決了上述具有一對多依賴關(guān)系的對象的重用問題。此模式的參與者分為兩大類,一類是被觀察的目標,另一

2、類是觀察該目標的觀察者們。正因為該模式是基于“一對多”的關(guān)系,所以該模式一般是應(yīng)用于由一個目標對象和 N 個觀察者對象組成(當然也可以擴展為有多個目標對象,但我們現(xiàn)在只討論前者)的場合。當目標對象的狀態(tài)發(fā)生改變或做出某種行為時,正在觀察該目標對象的觀察者們將自動地、連鎖地作出相應(yīng)的響應(yīng)行為。 通過本次實驗了解觀察者模式的原理。并能夠運用觀察者模式來進行編程。 實驗內(nèi)容 1 UML類圖 代理模式-追女友實例: 適配器模式-清潔系統(tǒng): 遠程方法調(diào)用: 2 程序的源代碼 代理模式-追女友實例: package Gift; public interface GiveGift public void G

3、iveDolls(); public void GiveFlowers(); public void GiveChocolate(); package Gift; public class Proxy implements GiveGift Pursuit gg; public Proxy(Pursuit g,SchoolGirl mm) super(); g.setMm(mm); this.gg = g; Override public void GiveDolls() / TODO Auto-generated method stub gg.GiveDolls(); Override pu

4、blic void GiveFlowers() / TODO Auto-generated method stub gg.GiveFlowers(); Override public void GiveChocolate() / TODO Auto-generated method stub gg.GiveChocolate(); package Gift; public class Pursuit implements GiveGift private SchoolGirl mm; private String name; public Pursuit(SchoolGirl mm, Stri

5、ng name) super(); this.mm = mm; = name; public SchoolGirl getMm() return mm; public void setMm(SchoolGirl mm) this.mm = mm; Override public void GiveDolls() / TODO Auto-generated method stub System.out.println(mm.getName() + + 這個洋娃娃是給你的,你親愛的 + + name); Override public void GiveFlowers() /

6、TODO Auto-generated method stub System.out.println(mm.getName() + + 這束鮮花是給你的,你親愛的 + + name); Override public void GiveChocolate() / TODO Auto-generated method stub System.out.println(mm.getName() + + 這塊巧克力是給你的,你親愛的 + + name); package Gift; public class SchoolGirl private String name; public SchoolGi

7、rl(String name) super(); = name; public String getName() return name; public void setName(String name) = name; package Gift; public class Test /* * param args */ public static void main(String args) / TODO Auto-generated method stub SchoolGirl SS = new SchoolGirl(小籠包); Pursuit p

8、= new Pursuit(SS, 過兒); Proxy pxy = new Proxy(p, SS); pxy.GiveChocolate(); pxy.GiveDolls(); pxy.GiveFlowers(); 適配器模式-清潔系統(tǒng): public interface Clean public void makeClean(); public class Office implements Clean public void makeClean() System.out.println(清潔辦公室); public class Workshop implements Clean pub

9、lic void makeClean() System.out.println(清潔工作室); public interface Extra extends Clean public void takeCare(); class Facility implements Extra public void takeCare() System.out.println(養(yǎng)護照料); public void makeClean () System.out.println(清潔設(shè)備); public class Client static void Jobs(Clean job) if(job inst

10、anceof Clean) (Clean)job).makeClean(); if(job instanceof Extra) (Extra)job).takeCare(); public static void main(String args) Extra e = new Facility(); Jobs(e); Clean c1 = new Office(); Clean c2 = new Workshop(); Jobs(c1); Jobs(c2); 遠程方法調(diào)用: package client; import java.rmi.*; import java.math.*; impor

11、t compute.*; /* * Client that asks the Generic Compute Server to compute pi.The first * command-line argument is the server hostname.The second command-line * argument is the number of required digits after the decimal point for the * computation. */ public class ComputePi public static void main(St

12、ring args) / Install a security manager! try /String name = / + args0 + /Compute; String name = rmi:/localhost:3332/Compute; / Get a reference to the remote object from the registry. Compute comp = (Compute) Naming.lookup(name); / Create a Task object. Pi task = new Pi(0); / Ask the server to perfor

13、m the computation. double pi = (double) (comp.executeTask(task); System.out.println(pi); catch (Exception e) System.err.println(ComputePi exception: + e.getMessage(); e.printStackTrace(); package client; import compute.*; import java.math.*; public class Pi implements Task private int digits; public

14、 Pi(int digits) this.digits = digits; package compute; import java.rmi.*; /* * Generic Compute Interface. */ public interface Compute extends Remote double executeTask(Task t) throws RemoteException; package compute; import java.io.Serializable; /* * Task Interface. */ public interface Task extends

15、Serializable package engine; import java.math.BigDecimal; import java.rmi.*; import java.rmi.registry.LocateRegistry; import java.rmi.server.*; import compute.*; /* * Server that executes a task specified in a Task object. */ public class ComputeEngine extends UnicastRemoteObject implements Compute

16、public ComputeEngine() throws RemoteException super(); double PI; public double executeTask(Task t) PI=3.1415926; return PI; public static void main(String args) / Install a security manager! / Create the remote object. / Register the remote object as Compute. String name = rmi:/localhost:3332/Compu

17、te; try Compute engine = new ComputeEngine(); LocateRegistry.createRegistry(3332); Naming.rebind(name, engine); System.out.println(ComputeEngine bound); catch (Exception e) System.err.println(ComputeEngine exception: + e.getMessage(); e.printStackTrace(); 3實驗截圖 代理模式-追女友實例: 適配器模式-清潔系統(tǒng): 遠程方法調(diào)用: 對該模式的認識 經(jīng)過本次代理遠程方法調(diào)用和適配器模式的實驗,通過自己動手編代碼,是自己理解代理遠程方法調(diào)用和適配器模式機制,并且知道代理遠程方法調(diào)用和適配器模式有以下的優(yōu)點:代理模式適用性:在需要更高級的對象

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論