中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站找云無限seo搜索優(yōu)化排名

做網(wǎng)站找云無限,seo搜索優(yōu)化排名,英文網(wǎng)站建站山東,做微信的網(wǎng)站有哪些功能目錄 一、定義二、結(jié)構(gòu)三、優(yōu)點四、使用場景五、代碼示例六、截圖示例 一、定義 1.在不改變現(xiàn)有對象結(jié)構(gòu)的情況下,動態(tài)給該對象添加額外功能的模式 2.類B繼承于類A,并將類A作為B類的屬性(B類聚合A類) 3.BufferedInputStream、Buff…

目錄

        • 一、定義
        • 二、結(jié)構(gòu)
        • 三、優(yōu)點
        • 四、使用場景
        • 五、代碼示例
        • 六、截圖示例

一、定義

  • 1.在不改變現(xiàn)有對象結(jié)構(gòu)的情況下,動態(tài)給該對象添加額外功能的模式
  • 2.類B繼承于類A,并將類A作為B類的屬性(B類聚合A類)
  • 3.BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter都用到了裝飾者模式

二、結(jié)構(gòu)

  • 1.抽象構(gòu)件角色(Component):定義一個抽象接口以規(guī)范準(zhǔn)備接收附加責(zé)任的對象
  • 2.具體構(gòu)件角色(Concrete Component):實現(xiàn)抽象構(gòu)件,通過裝飾角色為其添加一些職責(zé)
  • 3.抽象裝飾角色(Decorator):繼承或?qū)崿F(xiàn)抽象構(gòu)件,并包含具體構(gòu)件的實例,可以通過其子類擴展具體構(gòu)件的功能
  • 4.具體裝飾角色(ConcreteDecorator):實現(xiàn)抽象裝飾的相關(guān)方法,并給具體構(gòu)件對象添加附加的責(zé)任

三、優(yōu)點

  • 1.裝飾者模式可以帶來比繼承更加靈活性的擴展功能,使用更加方便,可以通過組合不同的裝飾者對象來獲取具有不同行為狀態(tài)的多樣化結(jié)果
  • 2.裝飾者模式比繼承更具良好的擴展性,完美的遵循開閉原則,繼承是靜態(tài)的附加責(zé)任,裝飾者則是動態(tài)的附加責(zé)任
  • 3.裝飾類和被裝飾類可以獨立發(fā)展,不會互相耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態(tài)擴展一個實現(xiàn)類的功能

四、使用場景

  • 1.當(dāng)不能采用繼承的方式對系統(tǒng)進行擴充或者采用繼承不利于系統(tǒng)擴展和維護時
  • 2.不能采用繼承的情況主要有兩類:1.系統(tǒng)中存在大量獨立的擴展,為支持每一種組合將產(chǎn)生大量的子類,使得子類數(shù)目呈爆炸性增長;2.類定義不能被繼承(例如被final修飾的類)
  • 3.在不影響其它對象情況下,以動態(tài)、透明的方式給單個對象添加職責(zé)
  • 4.當(dāng)對象的功能要求可以動態(tài)添加,也可以動態(tài)撤銷時

五、代碼示例

package com.learning.decorator;import lombok.AllArgsConstructor;
import lombok.Data;/*** 抽象構(gòu)件角色* 快餐類*/
@Data
@AllArgsConstructor
public abstract class FastFood {// 價格private float price;// 名稱private String name;public abstract float cost();public void printFastFood(){System.out.println(this.getName() + " " + this.cost());}
}
package com.learning.decorator;/*** 炒飯類* 具體構(gòu)件角色*/
public class FriedRice extends FastFood{public FriedRice(){super(10, "炒飯");}@Overridepublic float cost() {return getPrice();}
}
package com.learning.decorator;/*** 炒面類* 具體構(gòu)件角色*/
public class FriedNoodles extends FastFood{public FriedNoodles(){super(12, "炒面");}@Overridepublic float cost() {return getPrice();}
}
package com.learning.decorator;import lombok.Getter;
import lombok.Setter;/*** 裝飾者類* 抽象裝飾者角色*/
@Setter
@Getter
public abstract class Garnish extends FastFood{// 聲明快餐類的變量private FastFood fastFood;public Garnish(FastFood fastFood, float price, String name) {super(price, name);this.fastFood = fastFood;}
}
package com.learning.decorator;/*** 雞蛋類* 具體的裝飾者角色*/
public class Egg extends Garnish{public Egg(FastFood fastFood){super(fastFood, 1, "雞蛋");}@Overridepublic float cost() {// 計算價格return getFastFood().cost() + this.getPrice();}@Overridepublic String getName() {return super.getName() + getFastFood().getName();}
}
package com.learning.decorator;/*** 培根類* 具體的裝飾者角色*/
public class Bacon extends Garnish{public Bacon(FastFood fastFood){super(fastFood, 1, "培根");}@Overridepublic float cost() {// 計算價格return getFastFood().cost() + this.getPrice();}@Overridepublic String getName() {return super.getName() + getFastFood().getName();}
}
package com.learning.decorator;public class Client {public static void main(String[] args) {FastFood fastFood = new FriedRice();// 點一份炒飯fastFood.printFastFood();// 炒飯中添加雞蛋fastFood = new Egg(fastFood);fastFood.printFastFood();// 雞蛋炒飯中加培根fastFood = new Bacon(fastFood);fastFood.printFastFood();// 再加一個雞蛋fastFood = new Egg(fastFood);fastFood.printFastFood();}}

六、截圖示例

在這里插入圖片描述

http://www.risenshineclean.com/news/5882.html

相關(guān)文章:

  • 北京的制作網(wǎng)站的公司在哪里seo學(xué)校培訓(xùn)
  • 汽車圖片查詢網(wǎng)站源碼十大網(wǎng)站排行榜
  • 醫(yī)療網(wǎng)站建設(shè)公司哪家好百度站點
  • 電子商務(wù)網(wǎng)站規(guī)劃書范文桂林市天氣預(yù)報
  • 寧波網(wǎng)站設(shè)計企業(yè)網(wǎng)頁制作的步驟
  • 設(shè)計師培訓(xùn) 網(wǎng)站seo資訊
  • 網(wǎng)站建設(shè)是在商標(biāo)哪個類別16888精品貨源入口
  • 做圖片詳情網(wǎng)站如何注冊自己的網(wǎng)站
  • 百度主動提交工具 wordpress關(guān)鍵詞排名手機優(yōu)化軟件
  • 綜合網(wǎng)站推廣百度站長快速收錄
  • 海口網(wǎng)站建設(shè)專家評價網(wǎng)站推廣的方法和途徑
  • wordpress代碼高亮顯示北京seo案例
  • 河南住房和城鄉(xiāng)建設(shè)廳網(wǎng)官方網(wǎng)站全球搜索網(wǎng)站排名
  • 網(wǎng)站建設(shè)目錄結(jié)構(gòu)doc站長工具官網(wǎng)查詢
  • wordpress twenty fourteen主題做的演示網(wǎng)站新網(wǎng)店怎么免費推廣
  • 專門做推廣的網(wǎng)站網(wǎng)絡(luò)營銷平臺的主要功能
  • 網(wǎng)站建設(shè)中心ping站長工具
  • synology做網(wǎng)站廣州發(fā)布緊急通知
  • python做的網(wǎng)站公司seo
  • 自己做網(wǎng)站自己做SEO百度市場應(yīng)用官方app
  • 國內(nèi)做網(wǎng)站建設(shè)知名的公司品牌推廣的步驟和技巧
  • 云南建設(shè)網(wǎng)站sem培訓(xùn)班培訓(xùn)多少錢
  • 上海網(wǎng)站建設(shè)開發(fā)哪家澤成杭州seo網(wǎng)站推廣排名
  • 在什么網(wǎng)站做公務(wù)員題目中國新聞今日頭條
  • 酒泉市建設(shè)局網(wǎng)站招標(biāo)辦店鋪推廣平臺有哪些
  • 屬于網(wǎng)站建設(shè)過程規(guī)劃和準(zhǔn)備階段的是seo外鏈軟件
  • 做網(wǎng)站委托書seo官網(wǎng)
  • 更好的網(wǎng)站制作濟南seo怎么優(yōu)化
  • 網(wǎng)站專業(yè)代做哪家好滄州網(wǎng)站seo
  • 優(yōu)秀的手機網(wǎng)站2345手機瀏覽器