当前位置: 首页 > news >正文

新手做站必看 手把手教你做网站百度推广怎么收费

新手做站必看 手把手教你做网站,百度推广怎么收费,用jsp做电影网站的界面,临安做网站的公司一、什么是装饰器模式 装饰器模式(Decorator Pattern)是一种结构型设计模式,它的核心思想是在不改变原有对象结构的情况下,动态地给对象增加一些功能,从而达到扩展功能的目的。举个例子,今天在家妈妈给蒸馒…

一、什么是装饰器模式

        装饰器模式(Decorator Pattern)是一种结构型设计模式,它的核心思想是在不改变原有对象结构的情况下,动态地给对象增加一些功能,从而达到扩展功能的目的。举个例子,今天在家妈妈给蒸馒头。馒头蒸的过程中,妈妈去收拾衣服了。突然想起来,馒头好了,就跟你说:“帮我把馒头拿出来。”这个时候馒头特别烫,如果不烫其实用我们的手是可以拿出来的,但是这个时候光用手拿不行。所以我们想了个办法,找了一个手套,从而把馒头拿了出来。这个过程就类似于装饰器模式,手套相当于装饰器,给手(原有对象)增加了隔热的功能,使得手能够处理原本无法直接处理的烫馒头。

二、为什么使用装饰器模式

        基于上面的馒头场景,我们讨论一下为什么使用装饰器模式(为什么要戴手套):

  1. 动态扩展(撤销)功能:当需要在运行时为对象动态添加功能时,装饰器模式是一个很好的选择。例如,比如应对热馒头去拿的时候要隔热功能,不想隔热还可以直接上手。但是装饰的多了,手不热吗?手不累吗?所示要适当添加。别为了拿馒头装了一堆东西反而得不偿失。

  2. 避免子类爆炸:如果通过继承来扩展功能,可能会导致子类数量急剧增加,使得系统变得复杂且难以维护。装饰器模式可以避免这种情况,通过组合的方式动态添加功能(继承关系的替代)。

  3. 保持原有接口不变:装饰器模式可以在不改变原有对象接口的情况下,增加新的功能,这使得客户端代码可以透明地使用被装饰的对象,而不需要修改客户端代码。(拿馒头的手,拿的功能不变

三、装饰器模式示例

  1. Component(抽象组件):定义了被装饰对象的接口,所有具体的组件和装饰器都实现这个接口。

    //我就是一个手,人们定义我叫手,收能拿东西
    public interface Hand {void pickUp(Object object) throws Exception;
    }
  2. ConcreteComponent(具体组件):实现了Component接口的具体组件,是被装饰的对象。

    //我是一个赤裸裸真是长在身上的手,人们说手可以拿东西,我也可以
    public class BareHand implements Hand {@Overridepublic void pickUp(Object object) throws Exception {if (object instanceof HotBun) {throw new Exception("我擦,太热了!");}System.out.println("Picked up " + object.getClass().getSimpleName() + " with bare hands.");}
    }
  3. Decorator(装饰器抽象类):也实现了Component接口,持有一个Component对象的引用,通过组合的方式动态地为Component对象添加新的功能。

    //其实手上没准可以加点东西 
    public abstract class HandDecorator implements Hand {protected Hand hand;public HandDecorator(Hand hand) {this.hand = hand;}@Overridepublic void pickUp(Object object) throws Exception {hand.pickUp(object);}
    }
  4. ConcreteDecorator(具体装饰器):实现了Decorator的具体装饰器,负责给Component对象添加具体的装饰功能。

    //我是手套
    public class GloveDecorator extends HandDecorator {public GloveDecorator(Hand hand) {super(hand);}@Overridepublic void pickUp(Object object) throws Exception {System.out.println("戴上手套去拿 " + object.getClass().getSimpleName());hand.pickUp(object);}
    }
  5. 客户端

    //我是一个热馒头
    public class HotBun {// 烫馒头的具体实现
    }
    public class Main {public static void main(String[] args) {Hand bareHand = new BareHand();try {bareHand.pickUp(new HotBun());} catch (Exception e) {System.out.println(e.getMessage());}// 使用手套装饰手Hand glovedHand = new GloveDecorator(bareHand);try {glovedHand.pickUp(new HotBun());} catch (Exception e) {System.out.println(e.getMessage());}}
    }//输出
    我擦,太热了!
    戴上手套去拿热馒头
    我擦,太热了!
http://www.ds6.com.cn/news/95896.html

相关文章:

  • 域名查询是什么意思seo专员是什么职业
  • 新开传奇网站刚开一秒站长源码
  • 电子商务营销网站建设易观数据
  • 两台电脑一台做服务器 网站网络营销网站建设
  • 免费logo设计的网站东莞企业网站模板建站
  • 领导不愿意做招聘网站怎么办搜索引擎排名竞价
  • 广州市信息技术职业学校福州关键词优化平台
  • 广东网站建设便捷阿里指数在线查询
  • frontpage新建网站十大seo免费软件
  • 做钓鱼网站论坛西安百度关键词推广
  • 霍山网站建设镇江网站建站
  • 查看网站是用什么做的seo服务
  • 做网站买什么书危机公关处理方案
  • 怀化人大网站百度竞价个人开户
  • 聊城pc网站建设软件怎么进行推广
  • 学校网站建设会议讲话稿seo诊断分析工具
  • 用php做购物网站视频投诉百度最有效的电话
  • 美做天然居家居网站网站建设策划书
  • 哪里有网站开发深圳搜索竞价账户托管
  • 做网站的销售工作好吗什么是搜索引擎营销?
  • 企业网站 seo怎么做电脑培训班电脑培训学校
  • 网站建设视频教程最新推广类软文案例
  • 罗湖附近公司做网站建设多少钱网络推广seo
  • 曲靖住房和城乡建设局网站seo站长工具是什么
  • 重庆h5网站建设模板今日热点新闻头条国内
  • 广东网站制作公司排名怎样推广自己的网站
  • asp动态网站制作流程搜索引擎优化的方法有哪些?
  • wordpress图片站主题百度一下搜索网页
  • 做石油期货看什么网站东莞网站优化关键词排名
  • 网站建设市场分析响应式网站 乐云seo品牌