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

您的位置:首頁技術文章
文章詳情頁

javascript設計模式 ? 裝飾模式原理與應用實例分析

瀏覽:23日期:2023-11-04 09:34:30

本文實例講述了javascript設計模式 ? 裝飾模式原理與應用。分享給大家供大家參考,具體如下:

介紹:裝飾模式可以在不改變一個對象本身功能的基礎上給對象增加額外的新行為。在現實生活中,這種情況也到處存在,例如一張照片,可以不改變照片本身,通過增加一個相框,使其具有防潮的功能。裝飾模式是一種用于替代繼承的技術,它使用對象之間的關聯關系來取代繼承關系。

定義:動態的給一個對象增加一些額外的職責,就增加對象功能來說,裝飾模式比生成子類實現更為靈活。裝飾模式是一種對象結構模型。

場景:我們現有一個Circle類用來畫一個圓,新的需求要求畫一個紅色的圓,又一個新的需求要求我們畫一個半徑20的圓,又一個新的需求要求我們畫一個紅色的,半徑20的圓。如何設計才能讓我們的代碼來兼容這樣的需求呢?我們首先給Circle類包裝一個顏色的相框,這個相框用來改變圓的顏色。再給Circle類包裝一個大小的相框,這個相框用來改變圓的大小。通過不同的相框組合來達到想要的效果。

示例:

var Circle = function(){ this.draw = function(){ console.log(’畫圓’); };} var ColorDecorator = function(circle){ this.circle = circle; this.draw = function(){ this.circle.draw(); setColor(); return this.circle; } function setColor(){ console.log(’紅色’); }} var RadiusDecorator = function(circle){ this.circle = circle; this.draw = function(){ this.circle.draw(); setRadius(); } function setRadius(){ console.log(’半徑:20px’) }} var circle = new Circle(); var redCricle = new ColorDecorator(circle); var radiusCricle = new RadiusDecorator(circle); var radiusRedCircle = new RadiusDecorator(new ColorDecorator(circle)); //輸出:circle.draw(); //畫圓 redCricle.draw(); //畫圓 紅色 radiusCricle.draw(); //畫圓 半徑:20px radiusRedCircle.draw(); //畫圓 紅色 半徑:20px

以上就是裝飾模式的示例,比較好懂,在不改變Circle類基礎上進行擴展,通過包裝一層來實現新特性。降低了系統的耦合度。與繼承結構相比,裝飾模式大大減少了子類的個數,讓系統擴展起來更加方便,而且更容易維護。RadiusDecorator,ColorDecorator稱為裝飾類,他們的引入將大大簡化系統的設計,他也是裝飾模式的核心。

裝飾模式總結:

優點:* 便于擴展一個對象的功能,裝飾模式比繼承更加具有靈活性,不會導致類的個數急劇增加。* 可以通過一種動態的方式來擴展一個對象的功能。* 可以對一個對象進行多次裝飾,通過不同的裝飾類組合,可以創造很多不同行為的組合,得到功能更強大的對象

缺點:* 使用裝飾模式過程中會產生很多小對象,一定程度影響程序性能。* 裝飾模式特別靈活,同時也意味著更加容易出錯,排除復雜度也不低。

適用場景:* 不影響對象的基礎下進行擴展,添加職責

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 扬尘在线监测系统_工地噪声扬尘检测仪_扬尘监测系统_贝塔射线扬尘监测设备「风途物联网科技」 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 锂电叉车,电动叉车_厂家-山东博峻智能科技有限公司 | 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | 板式换网器_柱式换网器_自动换网器-郑州海科熔体泵有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 防渗膜厂家|养殖防渗膜|水产养殖防渗膜-泰安佳路通工程材料有限公司 | 定制/定做冲锋衣厂家/公司-订做/订制冲锋衣价格/费用-北京圣达信 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 打造全球沸石生态圈 - 国投盛世| 平面钻,法兰钻,三维钻-山东兴田阳光智能装备股份有限公司 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 隔离变压器-伺服变压器--输入输出电抗器-深圳市德而沃电气有限公司 | 慈溪麦田广告公司,提供慈溪广告设计。 | 软装设计-提供软装装饰和软装配饰及软装陈设的软装设计公司 | 辐射色度计-字符亮度测试-反射式膜厚仪-苏州瑞格谱光电科技有限公司 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 江苏齐宝进出口贸易有限公司 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 华夏医界网_民营医疗产业信息平台_民营医院营销管理培训 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 通风气楼_通风天窗_屋顶风机-山东美创通风设备有限公司 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 电销卡_稳定企业大语音卡-归属地可选-世纪通信 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | 科普仪器菏泽市教育教学仪器总厂 | 电动高压冲洗车_价格-江苏速利达机车有限公司 |