电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Java通俗易懂系列設計模式之裝飾模式

瀏覽:6日期:2022-08-13 18:35:28
介紹

裝飾模式,是面向?qū)ο缶幊填I(lǐng)域中,一種動態(tài)地往一個類中添加新的行為的設計模式。就功能而言,裝飾模式相比生成子類更為靈活,這樣可以給某個對象而不是整個類添加一些功能。

意圖:動態(tài)地給一個對象添加一些額外的職責和增加功能。

主要解決:一般的,我們?yōu)榱藬U展一個類經(jīng)常使用繼承方式實現(xiàn),由于繼承為類引入靜態(tài)特征,并且隨著擴展功能的增多,子類會很膨脹。

何時使用:在不想增加很多子類的情況下擴展類。

如何解決:將具體功能職責劃分,同時繼承裝飾者模式。

關(guān)鍵代碼:

1、Component 類充當抽象角色,不應該具體實現(xiàn)。

2、修飾類引用和繼承 Component 類,具體擴展類重寫父類方法。

實現(xiàn)

以結(jié)婚婚車為例,定義汽車接口

public interface Car { void drive();}

創(chuàng)建實現(xiàn)接口的實體類,德國寶馬系應該是作為婚車最多的品牌,

public class BMW implements Car { @Override public void drive() {System.out.println('寶馬汽車,風馳電掣。'); }}

創(chuàng)建實現(xiàn)了 Car 接口的抽象裝飾類。我們需要婚車接新娘

public abstract class WeddingCarDecorator implements Car{ private Car decoratorCar; public WeddingCarDecorator(Car decoratorCar) {this.decoratorCar = decoratorCar; } @Override public void drive() {decoratorCar.drive(); }}

創(chuàng)建擴展了 WeddingCarDecorator 類的實體裝飾類 - 寶馬婚車。

public class BMWWeddingCar extends WeddingCarDecorator { public BMWWeddingCar(Car decoratorCar) {super(decoratorCar); } @Override public void drive() {beautify();super.drive(); } private void beautify() {System.out.println('結(jié)婚婚車,鋪上鮮花,系上氣球。'); }}

使用 WeddingCarDecorator 來裝飾 Car對象。

public class DecoratorDemoMain { public static void main(String[] args) {System.out.println('------正常的德系寶馬------');BMW bmw = new BMW();bmw.drive();System.out.println('------作為婚車的德系寶馬------');BMWWeddingCar bmwWeddingCar = new BMWWeddingCar(bmw);bmwWeddingCar.drive(); }}

執(zhí)行程序,輸出結(jié)果:

------正常的德系寶馬------

寶馬汽車,風馳電掣。

------作為婚車的德系寶馬------

結(jié)婚婚車,鋪上鮮花,系上氣球。

類圖

Java通俗易懂系列設計模式之裝飾模式

總結(jié)

優(yōu)點:

裝飾類和被裝飾類可以獨立發(fā)展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態(tài)擴展一個實現(xiàn)類的功能。

缺點:

多層裝飾比較復雜,使用了許多類似的對象(裝飾器)。使用場景:

1、擴展一個類的功能。

2、動態(tài)增加功能,動態(tài)撤銷。裝飾器模式在Java IO類中經(jīng)常使用,例如FileReader,BufferedReader等。

注意事項:可代替繼承。

以上就是Java通俗易懂系列設計模式之裝飾模式的詳細內(nèi)容,更多關(guān)于Java設計模式的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 食品机械专用传感器-落料放大器-低价接近开关-菲德自控技术(天津)有限公司 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | 上海logo设计| 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 灰板纸、灰底白、硬纸板等纸品生产商-金泊纸业 | HDPE土工膜,复合土工膜,防渗膜价格,土工膜厂家-山东新路通工程材料有限公司 | 喷播机厂家_二手喷播机租赁_水泥浆洒布机-河南青山绿水机电设备有限公司 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 华夏医界网_民营医疗产业信息平台_民营医院营销管理培训 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 垃圾清运公司_环卫保洁公司_市政道路保洁公司-华富环境 | 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 吉祥新世纪铝塑板_生产铝塑板厂家_铝塑板生产厂家_临沂市兴达铝塑装饰材料有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 衬塑管道_衬四氟管道厂家-淄博恒固化工设备有限公司 | 青岛代理记账_青岛李沧代理记账公司_青岛崂山代理记账一个月多少钱_青岛德辉财税事务所官网 | 开锐教育-学历提升-职称评定-职业资格培训-积分入户 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 黑田精工电磁阀-CAMMOZI气缸-ROSS电磁-上海茂硕机械设备有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 光纤测温-荧光光纤测温系统-福州华光天锐光电科技有限公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 |