JAVA的23种设计模式之装饰模式

阅读: 评论:0

JAVA的23种设计模式之装饰模式

JAVA的23种设计模式之装饰模式

装饰器模式:

职责:

  • 动态的为一个对象增加新的功能。
  • 装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能拓展对象的新功能,使用对象的关联关系代替继承关系。更加灵活,同时能够避免类型体系的快速膨胀

实现细节:

  • Component 抽象构件角色:
    • · 真实对象和装饰对象具有相同的接口,这样客户端对象就能以与真实对象相同的方式通装饰对象交互。
  • ConcreteComponent具体构件角色(真实对象):
    • · io流中的FileInputStream , FileOutputStream 
  • Decorator 装饰角
    • · 持有一个抽象构件的引用,装饰对象接收所有客户端的请求,并把这些请求转发给真实的对象,这样就能在真实对象调用前后增加新的功能。
  • ConcreteDecorator 具体装饰角色:
    • · 负责给构件对象增加新的功能
package cn.fllday.decorator;//Component 抽象构件角色:
public interface ICar {void move();
}// 真实对象
class Car implements ICar{@Overridepublic void move() {System.out.println("在地上跑");}}// 装饰器角色
class SuperCar implements ICar{protected ICar car;public SuperCar(ICar car) {super();this.car = car;}@Overridepublic void move() {ve();}}
// ConcreteDecorator 具体装饰角色
class FlyCar extends SuperCar{public FlyCar(ICar car) {super(car);}public void fly() {System.out.println("天上飞");}@Overridepublic void move() {ve();fly();}}
//ConcreteDecorator 具体装饰角色
class WaterCar extends SuperCar{public WaterCar(ICar car) {super(car);}public void swiming() {System.out.println("水里游");}@Overridepublic void move() {ve();swiming();}}

Client 调用

package cn.fllday.decorator;public class Client {public static void main(String[] args) {Car car = new Car();ve();System.out.println("增加新的飞行的Car ---");FlyCar flyCar = new FlyCar(car);ve();System.out.println("增加水里游的Car ----");WaterCar waterCar = new WaterCar(flyCar);ve();}}

调用结果:

在地上跑
增加新的飞行的Car ---
在地上跑
天上飞
增加水里游的Car ----
在地上跑
天上飞
水里游

 

IO流实现细节:

本文发布于:2024-02-04 18:36:43,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170713823558435.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模式   JAVA
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23