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

网站开发学习网免费咨询在线

网站开发学习网,免费咨询在线,做明星网站,一个网站多大Java装饰器模式 摘要实现范例 装饰器模式#xff08;Decorator Pattern#xff09;允许向一个现有的对象添加新的功能#xff0c;同时又不改变其结构 装饰器模式创建了一个装饰类#xff0c;用来包装原有的类#xff0c;并在保持类方法签名完整性的前提下#xff0c;提供… Java装饰器模式 摘要实现范例 装饰器模式Decorator Pattern允许向一个现有的对象添加新的功能同时又不改变其结构 装饰器模式创建了一个装饰类用来包装原有的类并在保持类方法签名完整性的前提下提供了额外的功能 装饰器模式属于结构型模式它是作为现有的类的一个包装 摘要 1. 意图 动态地给一个对象添加一些额外的职责。就增加功能来说装饰器模式相比生成子类更为灵活2. 主要解决 一般的我们为了扩展一个类经常使用继承方式实现由于继承为类引入静态特征并且随着扩展功能的增多子类会很膨胀3. 何时使用 在不想增加很多子类的情况下扩展类 4. 如何解决 将具体功能职责划分同时继承装饰者模式5. 关键代码 Component类充当抽象角色不应该具体实现修饰类引用和继承Component类具体扩展类重写父类方法 6. 应用实例 孙悟空有72变当他变成”庙宇”后他的根本还是一只猴子但是他又有了庙宇的功能不论一幅画有没有画框都可以挂在墙上但是通常都是有画框的并且实际上是画框被挂在墙上在挂在墙上之前画可以被蒙上玻璃装到框子里这时画、玻璃和画框形成了一个物体 7. 优点 装饰类和被装饰类可以独立发展不会相互耦合装饰模式是继承的一个替代模式装饰模式可以动态扩展一个实现类的功能 8. 缺点 多层装饰比较复杂 9. 使用场景 扩展一个类的功能动态增加功能动态撤销 10. 注意事项 可代替继承 实现 创建一个Shape接口和实现了Shape接口的实体类创建一个实现了Shape接口的抽象装饰类ShapeDecorator并把Shape对象作为它的实例变量创建类RedShapeDecorator实现了ShapeDecorator实体类创建类DecoratorPatternDemo使用RedShapeDecorator来装饰Shape对象 范例 我们通过下面的范例来演示装饰器模式的用法其中我们将把一个形状装饰上不同的颜色同时又不改变形状类 1.创建一个接口. Shape.java package com.demo.gof; public interface Shape {void draw(); }2. 创建实现接口的实体类 Rectangle.java package com.demo.gof; public class Rectangle implements Shape {Overridepublic void draw() {System.out.println(Shape: Rectangle);} }Circle.java package com.demo.gof; public class Circle implements Shape {Overridepublic void draw() {System.out.println(Shape: Circle);} }3. 创建实现了 Shape 接口的抽象装饰类 ShapeDecorator.java package com.demo.gof; public abstract class ShapeDecorator implements Shape {protected Shape decoratedShape;public ShapeDecorator(Shape decoratedShape){this.decoratedShape decoratedShape;}public void draw(){decoratedShape.draw();} }4. 创建扩展了 ShapeDecorator 类的实体装饰类 RedShapeDecorator.java package com.demo.gof; public class RedShapeDecorator extends ShapeDecorator {public RedShapeDecorator(Shape decoratedShape) {super(decoratedShape); }Overridepublic void draw() {decoratedShape.draw(); setRedBorder(decoratedShape);}private void setRedBorder(Shape decoratedShape){System.out.println(Border Color: Red);} }5. 使用 RedShapeDecorator 来装饰 Shape 对象 DecoratorPatternDemo.java package com.demo.gof; public class DecoratorPatternDemo {public static void main(String[] args) {Shape circle new Circle();Shape redCircle new RedShapeDecorator(new Circle());Shape redRectangle new RedShapeDecorator(new Rectangle());System.out.println(Circle with normal border);circle.draw();System.out.println(\nCircle of red border);redCircle.draw();System.out.println(\nRectangle of red border);redRectangle.draw();} }编译运行以上 Java 范例输出结果如下 $ javac -d . src/main/com.demo/gof/DecoratorPatternDemo.java $ java com.demo.gof.DecoratorPatternDemo Circle with normal border Shape: CircleCircle of red border Shape: Circle Border Color: RedRectangle of red border Shape: Rectangle Border Color: Red
http://www.dnsts.com.cn/news/91815.html

相关文章:

  • 高校两学一做网站建设哪里有前端技术培训
  • 镇江市建设审图网站河北住房与建设信息网站
  • 网站对公司有什么好处济南建设工程业绩公示的网站
  • 做网站的例子公司部门简介模板
  • 做网站需要学多久北京海淀建设工程律师哪个好
  • 免费养殖网站模板网站开发帐务处理
  • 单页式网站模板最大网站建设公司排名
  • 婚庆网站设计永清县建设局 网站
  • 常州北京网站建设个人快速建站
  • 义乌做网站的网站建设350元
  • 大型电商网站开发规划淘宝优惠券网站用什么软件做
  • 网站开发常见模块wordpress分享插件带赞
  • wordpress改网站地址12380网站建设情况的报告
  • 很看好未来做生鲜的网站网站开发文档管理工具
  • 沈阳之道网站建设个人工商户做网站要上税吗
  • 网站开发工程师应聘书范文楚雄seo
  • 网站建设i rsky网站名称在哪里注册
  • 合肥网站网站建设把自己做的网站传到网上
  • 四川网站排名app和微网站的区别是什么
  • 福田网站建设龙岗网站建设罗湖网站建设网站开发交接表
  • 天河建设网站制作网站建设淘宝类目
  • 微信h5制作网站开发电商主图模板
  • 品牌服装网站建设现状wordpress noren
  • 网站建设方案书一定要有吗可以注册公司的地址
  • 网站开发职业wordpress 关键字 插件
  • 企业网站为什么做优化医疗网站建设行业现状
  • 加快信用网站建设全屋整装十大排名全国前十强
  • 装修设计网站哪个平台最好做公司官网大概多少钱
  • 平泉市住房和城乡建设局网站网站设置屏蔽广告
  • 接做网站需要问什么软件公司网站突然404