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

榆林市网站建设_网站建设公司_轮播图_seo优化

新手做导航网站,上海企业体检,总结网站推广策划书的共同特点,wordpress如何更换主机装饰模式#xff1a;动态地给一个对象添加一些额外的职责#xff08;以对客户端透明的方式扩展对象的功能#xff09;#xff0c;就增加功能来说#xff0c;装饰模式相比生成子类更为灵活#xff0c;是继承关系的一个替代方案。 装饰模式的四个角色#xff1a; 抽象构…装饰模式动态地给一个对象添加一些额外的职责以对客户端透明的方式扩展对象的功能就增加功能来说装饰模式相比生成子类更为灵活是继承关系的一个替代方案。 装饰模式的四个角色 抽象构件(Component)角色给出一个抽象接口以规范准备接收附加责任的对象。在装饰模式中必然有一个最基本、最原始、最核心的接口或者抽象类充当Component抽象构件。具体构件(ConcreteComponent)角色定义一个将要接收附加责任的类。装饰(Decorator)角色持有一个构件(Component)对象的实例并定义一个与抽象构件接口一致的接口。具体装饰(ConcreteDecorator)角色负责给构件对象“贴上”附加的责任。 1. 透明性的要求 装饰模式对客户端的透明性要求程序不要声明一个ConcreteComponent类型的变量而应当声明一个Component类型的变量。 下面的做法是对的Component component new ConcreteComponent(); component new ConcreteDecorator(component);而下面的做法是不对的Component component new ConcreteComponent(); ConcreteDecorator componentDecorator new ConcreteDecorator(component); 2. 半透明的装饰模式 纯粹的装饰模式很难找到。装饰模式的用意是在不改变接口的前提下增强所考虑的类的性能。在增强性能的时候往往需要建立新的公开的方法即在具体装饰(ConcreteDecorator)角色里增加一个newMethod()方法。这就导致了大多数的装饰模式的实现都是“半透明”的而不是完全透明的。换言之允许装饰模式改变接口增加新的方法。这意味着客户端可以声明ConcreteDecorator类型的变量从而可以调用ConcreteDecorator类中才有的方法 Component component new ConcreteComponent(); ConcreteDecorator componentDecorator new ConcreteDecorator(component); componentDecorator.newMethod();半透明的装饰模式是介于装饰模式和适配器模式之间的。适配器模式的用意是改变所考虑的类的接口也可以通过改写一个或几个方法或增加新的方法来增强或改变所考虑的类的功能。大多数的装饰模式实际上是半透明的装饰模式这样的装饰模式也称做半装饰、半适配器模式。 3. 装饰模式的优点 装饰模式与继承关系的目的都是要扩展对象的功能但是装饰模式可以提供比继承更多的灵活性。装饰模式允许系统动态决定“贴上”一个需要的“装饰”或者除掉一个不需要的“装饰”。继承关系则不同继承关系是静态的它在系统运行前就决定了。通过使用不同的具体装饰类以及这些装饰类的排列组合设计师可以创造出很多不同行为的组合。 4. 装饰模式的缺点由于使用装饰模式可以比使用继承关系需要较少数目的类。使用较少的类当然使设计比较易于进行。但是在另一方面使用装饰模式会产生比使用继承关系更多的对象。更多的对象会使得查错变得困难特别是这些对象看上去都很相像。 1. 模版代码//抽象构件 public abstract class Component {//抽象的方法public abstract void operate(); }//具体构件 public class ConcreteComponent extends Component {//具体实现Overridepublic void operate() {System.out.println(do Something);}}//抽象的装饰者类 public abstract class Decorator extends Component {private Component component null;//通过构造函数传递被修饰者public Decorator(Component _component){this.component _component;}//委托给被修饰者执行Overridepublic void operate() {this.component.operate();}}//具体的装饰类1 public class ConcreteDecorator1 extends Decorator {//定义被修饰者public ConcreteDecorator1(Component _component){super(_component);}//定义自己的修饰方法private void method1(){System.out.println(method1 修饰);}//重写父类的Operation方法public void operate(){this.method1();super.operate();} }//具体的装饰类2 public class ConcreteDecorator2 extends Decorator {//定义被修饰者public ConcreteDecorator2(Component _component){super(_component);}//定义自己的修饰方法private void method2(){System.out.println(method2修饰);}//重写父类的Operation方法public void operate(){super.operate();this.method2();} }//场景类 public class Client {public static void main(String[] args) {Component component new ConcreteComponent();//第一次修饰component new ConcreteDecorator1(component);//第二次修饰component new ConcreteDecorator2(component);//修饰后运行component.operate();}}
http://www.lebaoying.cn/news/53789.html

相关文章:

  • 网站建设的风险识别做旅游网站的目的和意义
  • 做网站哪家好公司滴滴出行网站建设
  • 苏州建网站流程培训网站开发需求说明书
  • 网络会议有哪些软件网站seo诊断分析和优化方案
  • 北京建设规划许可证网站优秀企业网站首页
  • 网站建设案例精粹PHP网站开发成功案例
  • 网站建设官方网毕业答辩问题怎么做的这个网站
  • 凡科建站网址麦吉太原网站建设丽怎么代理
  • 免费的软件网站wordpress批量导入标签
  • 做导购网站要多少钱湖南网站建设的公司排名
  • 重庆网站建设价格竞价托管信息
  • 建设网站ppt望京做网站
  • 中国住房城乡建设部网站天津建设网投标网站
  • 甘肃省建设监理协会网站拟一份饰品网站建设合同
  • 免费网站建站软件服务平台的宗旨
  • 门户网站软文搜索关键词网站
  • 免费软件网站下载小程序互动投票
  • 抚州北京网站建设徐州专业网站制作
  • 企业网站托管方式建设部监理工程师报考网站
  • 搜索引擎中 哪些网站可以获得更好的排名河南省安阳市建设银行网站
  • 网站开发建设一般多少钱wordpress 页面中读取文章列表
  • 视频背景音乐怎么做mp3下载网站苏州市吴江区住房和城乡建设局网站
  • 贵州省建设厅门户网站wordpress 插件修改
  • 番禺移动网站建设微网站建设完 不知道怎么推广咋办
  • 网站 建设在作用是什么巴基斯坦外贸平台
  • discuz 网站搬家网站建设实训报告收获
  • 成都专业手机网站建设服务wordpress 美图主题
  • 网站被黑 原因山东网站营销seo电话
  • 电子书店网站开发linux网站管理面板
  • 福建志佳建设工程发展有限公司网站给小公司做网站赚钱么