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

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

外觀設計模式組圖(Fa?ade pattern)

2019-11-18 12:15:46
字體:
來源:轉載
供稿:網友

  描述
  
  外觀模式(Fa?ade pattern)涉及到子系統的一些類。所謂子系統,是為提供一系列相關的特征(功能)而緊密關聯的一組類。例如,一個Account類、Address類和CreditCard類相互關聯,成為子系統的一部分,提供在線客戶的特征。
  
  在真實的應用系統中,一個子系統可能由很多類組成。子系統的客戶為了它們的需要,需要和子系統中的一些類進行交互??蛻艉妥酉到y的類進行直接的交互會導致客戶端對象和子系統(Figure 22.1)之間高度耦合。任何的類似于對子系統中類的接口的修改,會對依靠于它的所有的客戶類造成影響。
  
 外觀設計模式組圖(Fa?ade pattern)(圖一)


  Figure 22.1: Client Interaction with Subsystem Classes before Applying the Fa?ade Pattern
  

  外觀模式(Fa?ade pattern)很適用于在上述情況。外觀模式(Fa?ade pattern)為子系統提供了一個更高層次、更簡單的接口,從而降低了子系統的復雜度和依靠。這使得子系統更易于使用和治理。
  
  外觀是一個能為子系統和客戶提供簡單接口的類。當正確的應用外觀,客戶不再直接和子系統中的類交互,而是與外觀交互。外觀承擔與子系統中類交互的責任。實際上,外觀是子系統與客戶的接口,這樣外觀模式降低了子系統和客戶的耦合度(Figure 22.2).
  
 外觀設計模式組圖(Fa?ade pattern)(圖二)
  Figure 22.2: Client Interaction with Subsystem Classes after Applying the Fa?ade Pattern
  

  從Figure 22.2中我們可以看到:外觀對象隔離了客戶和子系統對象,從而降低了耦合度。當子系統中的類進行改變時,客戶端不會像以前一樣受到影響。
  
  盡管客戶使用由外觀提供的簡單接口,但是當需要的時候,客戶端還是可以視外觀不存在,直接訪問子系統中的底層次的接口。這種情況下,它們之間的依靠/耦合度和原來一樣。
  
  例子:
  
  讓我們建立一個應用:
  
  (1)  接受客戶的具體資料(賬戶、地址和信用卡信息)
  
 ?。?)  驗證輸入的信息
  
 ?。?)  保存輸入的信息到相應的文件中。
  
  這個應用有三個類:Account、Address和CreditCard。每一個類都有自己的驗證和保存數據的方法。
  
  Listing 22.1: AccountClass
  
  public class Account {
  String firstName;
  String lastName;
  final String ACCOUNT_DATA_FILE = "AccountData.txt";
  public Account(String fname, String lname) {
  firstName = fname;
  lastName = lname;
  }
  public boolean isValid() {
  /*
  Let's go with simpler validation
  here to keep the example simpler.
  */
  …
  …
  }
  public boolean save() {
  FileUtil futil = new FileUtil();
  String dataLine = getLastName() + ”," + getFirstName();
  return futil.writeToFile(ACCOUNT_DATA_FILE, dataLine,
  true, true);
  }
  public String getFirstName() {
  return firstName;
  }
  public String getLastName() {
  return lastName;
  }
  }
  
  Listing 22.2: Address Class
  
  public class Address {
  String address;
  String city;
  String state;
  final String ADDRESS_DATA_FILE = "Address.txt";
  public Address(String add, String cty, String st) {
  address = add;
  city = cty;
  state = st;
  }
  public boolean isValid() {
  /*
  The address validation algorithm
  could be complex in real-world
  applications.
  Let's go with simpler validation
  here to keep the example simpler.
  */
  if (getState().trim().length() < 2)
  return false;
  return true;
  }
  public boolean save() {
  FileUtil futil = new FileUtil();
  String dataLine = getAddress() + ”," + getCity() + ”," +
  getState();
  return futil.writeToFile(ADDRESS_DATA_FILE, dataLine,
  true, true);
  }
  public String getAddress() {
  return address;
  }
  public String getCity() {
  return city;
  }
  public String getState() {
  return state;
  }
  }
  
  Listing 22.3: CreditCard Class
  
  public class CreditCard {
  String cardType;
  String cardNumber;
  String cardEXPDate;
  final String CC_DATA_FILE = "CC.txt";
  public CreditCard(String ccType, String ccNumber,
  String ccExpDate) {
  cardType = ccType;
  cardNumber = ccNumber;
  cardExpDate = ccExpDate;
  }
  public boolean isValid() {
  /*
  Let's go with simpler validation
  here to keep the example simpler.
  */
  if (getCardType().equals(AccountManager.VISA)) {
  return (getCardNumber().trim().length() == 16);
  }
  if (getCardType().equals(AccountManager.DISCOVER)) {
  return (getCardNumber().trim().length() == 15);
  }
  if (getCardType().equals(AccountManager.MASTER)) {
  return (getCardNumber().trim().length() == 16);
  }
  return false;
  }
  public boolean save() {
  FileUtil futil = new FileUtil();
  String dataLine =
  getCardType() + ,”" + getCardNumber() + ”," +
  getCardExpDate();
  return futil.writeToFile(CC_DATA_FILE, dataLine, true,
  true);
  }
  public String getCardType() {
  return cardType;
  }
  public String getCardNumber() {
  return cardNumber;
  }
  public String getCardExpDate() {
  return cardExpDate;
  }
  }
  
 外觀設計模式組圖(Fa?ade pattern)(圖三)

  讓我們建立一個客戶AccountManager,它提供用戶輸入數據的用戶界面。
  
  Listing 22.4: Client AccountManager Class
  
  public class AccountManager extends JFrame {
  public static final String newline = "/n";
  public static final String VALIDATE_SAVE = "Validate & Save";
  …
  …
  public AccountManager() {
  super(" Facade Pattern - Example ");
  cmbCardType = new JComboBox();
  cmbCardType.addItem(AccountManager.VISA);
  cmbCardType.addItem(AccountManager.MASTER);
  cmbCardType.addItem(AccountManager.DISCOVER);
  …
  …
  //Create buttons
  JButton validateSaveButton =
  new JButton(AccountManager.VALIDATE_SAVE);
  …
  …
  }
  public String getFirstName() {
  return txtFirstName.getText();
  }
  …
  …
  }//End of class AccountManager
  
  當客戶AccountManage運行的時候,展示的用戶接口如下:
  
 外觀設計模式組圖(Fa?ade pattern)(圖四)
  Figure 22.4: User Interface to Enter the Customer Data
  

  為了驗證和保存輸入的數據,客戶AccountManager需要:
  
 ?。?)  建立Account、Address和CreditCard對象。
  
 ?。?)  用這些對象驗證輸入的數據
  
 ?。?)  用這些對象保存輸入的數據。
  
  下面是對象間的交互順序圖:
  
 外觀設計模式組圖(Fa?ade pattern)(圖五)
  Figure 22.5: How a Client Would Normally Interact (Directly) with Subsystem Classes to Validate and Save the Customer Data
  

  在這個例子中應用外觀模式是一個很好的設計,它可以降低客戶和子系統組件(Address、Account和CreditCard)之間的耦合度。應用外觀模式,讓我們定義一個外觀類CustomerFacade (Figure 22.6 and Listing 22.5)。它為由客戶數據處理類(Address、Account和CreditCard)所組成的子系統提供一個高層次的、簡單的接口。
  
  CustomerFacade
  address:String
  city:String
  state:String
  cardType:String
  cardNumber:String
  cardExpDate:String
  fname:String
  lname:String
  setAddress(inAddress:String)
  setCity(inCity:String)
  setState(inState:String)
  setCardType(inCardType:String)
  setCardNumber(inCardNumber:String)
  setCardExpDate(inCardExpDate:String)
  setFName(inFName:String)
  setLName(inLName:String)
  saveCustomerData()
  
 外觀設計模式組圖(Fa?ade pattern)(圖六)
  Figure 22.6: Fa?ade Class to Be Used by the Client in the Revised Design
  

  Listing 22.5: CustomerFacade Cl

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美丰满少妇xxxxx| 欧美精品videosex极品1| 国产拍精品一二三| 狠狠躁夜夜躁人人爽天天天天97| 亚洲精品视频在线观看视频| 欧美黄色免费网站| 欧美性猛交xxxxx免费看| 日韩欧美国产一区二区| 亚洲片在线资源| 91精品视频在线| 综合国产在线视频| 亚洲欧美日韩另类| 国产一区二区在线播放| 亚洲xxxx做受欧美| 亚洲免费视频在线观看| 久久久免费在线观看| 亚洲奶大毛多的老太婆| 欧美激情精品久久久| 国产精品∨欧美精品v日韩精品| 亚洲欧美激情四射在线日| 国产精品观看在线亚洲人成网| 日韩在线观看视频免费| 精品国产电影一区| 日韩**中文字幕毛片| 亚洲国产精品99久久| 久久久成人av| 欧美在线性视频| 国产不卡精品视男人的天堂| 国产丝袜一区二区三区免费视频| 国产丝袜精品视频| 美女扒开尿口让男人操亚洲视频网站| 久久久国产一区二区| 国产成人精品综合久久久| 精品国模在线视频| 97在线免费观看| 国产精品爽爽爽爽爽爽在线观看| 欧美国产在线视频| 欧美电影在线观看高清| 国产在线拍偷自揄拍精品| 亚洲激情小视频| 国产精品视频色| 国产精品网红福利| 精品久久久久国产| 日本久久久久亚洲中字幕| 欧美高清不卡在线| 92福利视频午夜1000合集在线观看| 日本成人精品在线| 国产精品视频免费在线观看| 国产精品入口福利| 精品久久久久久国产| 国产精品久久久久福利| 中文字幕日韩欧美在线视频| 成人激情视频在线播放| 日韩一区视频在线| 亚洲视频欧美视频| 成人性教育视频在线观看| 国产婷婷色综合av蜜臀av| 色七七影院综合| 国产亚洲人成a一在线v站| 久久在线免费观看视频| 色噜噜狠狠狠综合曰曰曰88av| 国产综合在线视频| 97人洗澡人人免费公开视频碰碰碰| 久久视频精品在线| 国产一区二区视频在线观看| 蜜月aⅴ免费一区二区三区| 欧美激情视频免费观看| 亚洲精品免费网站| 国产91精品视频在线观看| 日韩精品中文字幕久久臀| 日韩成人激情视频| www国产精品视频| 97精品国产97久久久久久免费| 国产精品极品在线| 国产精品三级美女白浆呻吟| 日韩欧美综合在线视频| 亚洲人成电影网站色…| 久久久亚洲国产| 亚洲免费小视频| 精品久久久在线观看| 欧美日韩成人在线观看| 欧洲成人免费aa| 亚洲激情自拍图| 亚洲人高潮女人毛茸茸| 国产精品视频男人的天堂| 一道本无吗dⅴd在线播放一区| 亚洲欧美中文日韩在线v日本| 91视频免费在线| 精品视频在线导航| 久久av红桃一区二区小说| 97在线看免费观看视频在线观看| 国产在线久久久| 国产一区二区精品丝袜| 亚洲最大在线视频| 欧美日韩国产成人在线| 欧美日韩国产va另类| 国产精品夜色7777狼人| 亚州成人av在线| 国产剧情日韩欧美| 国产精品视频午夜| 日本久久久久亚洲中字幕| 国产91久久婷婷一区二区| 国产成人一区三区| 国产精品欧美激情在线播放| 日韩一区二区福利| 精品久久久久久亚洲精品| 亚洲free性xxxx护士hd| 欧美亚洲成人精品| 国产xxx69麻豆国语对白| 日韩在线观看你懂的| 精品久久香蕉国产线看观看亚洲| 日韩精品久久久久久久玫瑰园| 欧美俄罗斯乱妇| 欧美日韩国产区| 国产区亚洲区欧美区| 亚洲免费伊人电影在线观看av| 欧美激情精品久久久久久变态| 日韩禁在线播放| 欧美电影免费观看高清完整| 国产欧美日韩精品专区| 亚洲国产私拍精品国模在线观看| 成人精品aaaa网站| 午夜精品一区二区三区在线| 欧美激情视频三区| 久久免费高清视频| 国产欧美日韩中文字幕在线| 久久久久99精品久久久久| 国产精品情侣自拍| 亚洲аv电影天堂网| 狠狠色狠狠色综合日日五| 亚洲成人激情小说| 亚洲欧洲在线观看| 亚洲欧洲中文天堂| 国产精品自拍小视频| 久久av红桃一区二区小说| 一区二区在线免费视频| 欧美亚洲第一页| 色诱女教师一区二区三区| 久久精品视频中文字幕| 欧美极品少妇xxxxⅹ喷水| 国产精品国产亚洲伊人久久| 亚洲在线观看视频| 欧美成人一二三| 久久国产精品99国产精| 97成人在线视频| 亚洲女人天堂成人av在线| 海角国产乱辈乱精品视频| 国内精品久久久久久久久| 国产精品久久久一区| 在线日韩欧美视频| 不卡av在线播放| 中文.日本.精品| 欧美性猛交xxxx乱大交极品| 国产精品扒开腿做爽爽爽男男| 欧美日韩亚洲视频一区| 日韩欧美亚洲一二三区| 国产精品自产拍在线观看中文| 亚洲欧美成人一区二区在线电影| 中日韩午夜理伦电影免费| 亚洲国产欧美一区二区三区同亚洲| 热草久综合在线| 亚洲影院色在线观看免费| 国模精品视频一区二区三区| 国产精品啪视频|