最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

设计模式—结构型模式之装饰器模式

维修 admin 472浏览 0评论

设计模式—结构型模式之装饰器模式

设计模式—结构型模式之装饰器模式

适配器是连接两个类,可以增强一个类,装饰器是增强一个类。

向一个现有的对象添加新的功能,同时又不改变其结构。属于对象结构型模式。

创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

举例

比如我们有一个直播平台,提供了直播功能,但是如果不进行美颜,可能就比较冷清。所以美颜功能就是我们的增强,可以用装饰器来实现。

直播接口:

/*** 直播接口*/
public interface LiveBroadCastInterface {void liveBroadcast();
}

直播类:

/*** 实现直播接口*/
public class SjdwzLiveBroadCast implements LiveBroadCastInterface{@Overridepublic void liveBroadcast() {System.out.println("我来直播了......");}
}

如果没有美颜,可能就会比较冷清;所以我们可以提供一个装饰器,来为我们的直播进行增强。

直播装饰器接口:

/*** 直播平台增强*/
public interface LiveBroadCastDecoratorInterface extends LiveBroadCastInterface{void enhance();
}

美颜装饰器如下:

/*** 美颜功能装饰器*/
public class BeautyLiveBroadCastDecorator implements LiveBroadCastDecoratorInterface{private LiveBroadCastInterface liveBroadcast;public BeautyLiveBroadCastDecorator(LiveBroadCastInterface liveBroadcast) {this.liveBroadcast = liveBroadcast;}/*** 增强的功能*/@Overridepublic void enhance() {System.out.println("增加了美颜功能");}@Overridepublic void liveBroadcast() {//对功能进行增强this.enhance();//还得要进行原功能this.liveBroadcast.liveBroadcast();}
}

测试类如下:

public class DecoratorTest {public static void main(String[] args) {SjdwzLiveBroadCast sjdwzLiveBroadCast = new SjdwzLiveBroadCast();//不增强的话sjdwzLiveBroadCast.liveBroadcast();System.out.println("============增强功能===============");//装饰器BeautyLiveBroadCastDecorator beautyLiveBroadCastDecorator = new BeautyLiveBroadCastDecorator(sjdwzLiveBroadCast);//增强的功能beautyLiveBroadCastDecorator.liveBroadcast();}
}

运行截图如下:

可以看到增强了功能。

设计模式—结构型模式之装饰器模式

设计模式—结构型模式之装饰器模式

适配器是连接两个类,可以增强一个类,装饰器是增强一个类。

向一个现有的对象添加新的功能,同时又不改变其结构。属于对象结构型模式。

创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

举例

比如我们有一个直播平台,提供了直播功能,但是如果不进行美颜,可能就比较冷清。所以美颜功能就是我们的增强,可以用装饰器来实现。

直播接口:

/*** 直播接口*/
public interface LiveBroadCastInterface {void liveBroadcast();
}

直播类:

/*** 实现直播接口*/
public class SjdwzLiveBroadCast implements LiveBroadCastInterface{@Overridepublic void liveBroadcast() {System.out.println("我来直播了......");}
}

如果没有美颜,可能就会比较冷清;所以我们可以提供一个装饰器,来为我们的直播进行增强。

直播装饰器接口:

/*** 直播平台增强*/
public interface LiveBroadCastDecoratorInterface extends LiveBroadCastInterface{void enhance();
}

美颜装饰器如下:

/*** 美颜功能装饰器*/
public class BeautyLiveBroadCastDecorator implements LiveBroadCastDecoratorInterface{private LiveBroadCastInterface liveBroadcast;public BeautyLiveBroadCastDecorator(LiveBroadCastInterface liveBroadcast) {this.liveBroadcast = liveBroadcast;}/*** 增强的功能*/@Overridepublic void enhance() {System.out.println("增加了美颜功能");}@Overridepublic void liveBroadcast() {//对功能进行增强this.enhance();//还得要进行原功能this.liveBroadcast.liveBroadcast();}
}

测试类如下:

public class DecoratorTest {public static void main(String[] args) {SjdwzLiveBroadCast sjdwzLiveBroadCast = new SjdwzLiveBroadCast();//不增强的话sjdwzLiveBroadCast.liveBroadcast();System.out.println("============增强功能===============");//装饰器BeautyLiveBroadCastDecorator beautyLiveBroadCastDecorator = new BeautyLiveBroadCastDecorator(sjdwzLiveBroadCast);//增强的功能beautyLiveBroadCastDecorator.liveBroadcast();}
}

运行截图如下:

可以看到增强了功能。

发布评论

评论列表 (0)

  1. 暂无评论