程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 輕松控制java裝潢者形式

輕松控制java裝潢者形式

編輯:關於JAVA

輕松控制java裝潢者形式。本站提示廣大學習愛好者:(輕松控制java裝潢者形式)文章只能為提供參考,不一定能成為您想要的結果。以下是輕松控制java裝潢者形式正文


界說:在不用轉變原類文件和應用繼續的情形下,靜態地擴大一個對象的功效。它是經由過程創立一個包裝對象,也就是裝潢來包裹真實的對象。

特色:

    (1) 裝潢對象和真實對象有雷同的接口。如許客戶端對象就可以以和真實對象雷同的方法和裝潢對象交互。

    (2) 裝潢對象包括一個真實對象的援用(reference)

    (3) 裝潢對象接收一切來自客戶真個要求。它把這些要求轉發給真實的對象。

    (4) 裝潢對象可以在轉發這些要求之前或今後增長一些附加功效。如許就確保了在運轉時,不消修正給定對象的構造便可以在內部增長附加的功效。在面向對象的設計中,平日是經由過程繼續來完成對給定類的功效擴大。

企業級開辟和經常使用框架中的運用:IO流底層架構

構成:

        (1)籠統構件(Component)腳色:給出一個籠統接口,以標准預備吸收附加義務的對象。
  (2)詳細構件(Concrete Component)腳色:界說一個將要吸收附加義務的類。
  (3)裝潢(Decorator)腳色:持有一個構件(Component)對象的實例,並完成一個與籠統構件接口分歧的接口。
  (4)詳細裝潢(Concrete Decorator)腳色:擔任給構件對象添加上附加的義務。

詳細實例:

/**
 * 以下裝潢房子舉例
 */
public class Demo {

 public static void main(String[] args) {
 GenericHouse house = new GenericHouse();
 Garage garage = new Garage(house);
 garage.doSomething();
 Kitchen kitchen = new Kitchen(house);
 kitchen.doSomething();
 }
}

/**
 * 籠統構件腳色:一個接口,用以標准詳細裝潢的地位 
 */
interface AbstractHouse{
 public void doSomething();
}

/**
 * 裝潢腳色: 持有要裝潢的對象
 */
class Master implements AbstractHouse{
 
 private AbstractHouse abstractHouse;

 public Master(AbstractHouse abstractHouse) {
 this.abstractHouse = abstractHouse;
 }
 
 public void doSomething() {
 System.out.println("裝潢腳色:裝潢腳色持有者,在這兒就是房子的主人");
 abstractHouse.doSomething();
 }
 
}

/**
 * 詳細的構件腳色:詳細須要被裝潢的對象 
 */
class GenericHouse implements AbstractHouse{
 public void doSomething() {
 System.out.println("詳細構建腳色:房子可以住人,遮風擋雨!");
 }
}

/**
 * 詳細裝潢腳色: 詳細的裝潢就是在這兒做的,它繼續自裝潢腳色,由於裝潢腳色持有被裝潢對象,
 * 所以它也就持有了被裝潢對象,可以做裝潢
 */
class Garage extends Master{

 public Garage(AbstractHouse abstractHouse) {
 super(abstractHouse);
 }
 
 public void doSomething() {
 super.doSomething();
 System.out.println("詳細裝潢腳色:在這兒做裝潢的事兒,把房子中的一間裝潢成車庫,所以房子可以寄存車子了");
 }
}
/**
 * 詳細裝潢腳色: 詳細的裝潢就是在這兒做的,它繼續自裝潢腳色,由於裝潢腳色持有被裝潢對象,
 * 所以它也就持有了被裝潢對象,可以做裝潢
 */
class Kitchen extends Master{

 public Kitchen(AbstractHouse abstractHouse) {
 super(abstractHouse);
 }
 
 public void doSomething() {
 super.doSomething();
 System.out.println("詳細裝潢腳色:在這兒做裝潢的事兒,把房子中的一間裝潢成廚房,所以房子可以做飯了");
 }
}

在現實開辟中,裝潢著形式的包假裝用有很年夜的感化,我們可以在不轉變本來對象的情形下,對對象做一些其他的操作,如許可以免我們改革對象,但同時我們又可以很好的完成一些操作。

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved