Java 装饰设计模式

来源:互联网 发布:qt tcp客户端发送数据 编辑:程序博客网 时间:2024/06/03 14:52

装饰设计模式是对已经存在的对象增加新的功能,相比继承不会那么臃肿

 

首先定义一个接口,手机最基本的功能打电话

public interface Mobile {public void call();}


定义抽象的装饰类实现Mobile接口

public abstract class MobileDecorate implements Mobile {private Mobile moblie;public MobileDecorate(Mobile moblie) {this.moblie = moblie;}@Overridepublic void call() {this.moblie.call();}}


手机最基本的功能打电话的类

/** * 手机最基本的功能 */public class MobileCall implements Mobile {@Overridepublic void call() {System.out.println("手机可以打电话");}}

 

增强功能的类--听MP3 要继承装饰类MobileDecorate

/** * 手机听MP3类 */public class MobileMp3 extends MobileDecorate{public MobileMp3(Mobile moblie) {super(moblie);}@Overridepublic void call() {super.call();System.out.println("手机听MP3");}}

增强功能的类--看电影 要继承装饰类MobileDecorate

/** * 手机看电影类 */public class MobileMovie extends MobileDecorate{public MobileMovie(Mobile moblie) {super(moblie);}@Overridepublic void call() {super.call();System.out.println("用手机看电影");}}

测试类

public static void main(String[] args) {//普通手机Mobile 小灵通 = new MobileCall();小灵通.call();System.out.println("----------------");//增加MP3功能的手机(传原有的对象)MobileDecorate mobileDecorate = new MobileMp3(小灵通);mobileDecorate.call();System.out.println("----------------");//增加播放电影功能手机(传原有的对象)mobileDecorate = new MobileMovie(小灵通);mobileDecorate.call();System.out.println("----------------");//增加MP3和播放电影功能手机(无需新建MP3功能和电影功能的类)mobileDecorate = new MobileMovie(new MobileMp3(小灵通));mobileDecorate.call();}

执行结果:

手机可以打电话----------------手机可以打电话手机听MP3----------------手机可以打电话用手机看电影----------------手机可以打电话手机听MP3用手机看电影


 

0 0
原创粉丝点击