标签:void ldh public sing 设计模式 装饰 类中
概念
在不改变原有类的继承关系的情况下,动态的扩展对象的一个额外的功能。
简单理解:给原来的类,增加一些功能。
package demo8_装饰者设计模式;
/*
* 实现装饰者设计模式的步骤
* 1. 装饰类和被装饰类必须实现相同的接口
* 2. 在装饰类中必须传入被装饰类的引用
* 3. 在装饰类中对需要扩展的方法进行扩展
* 4. 在装饰类中对不需要扩展的方法调用被装饰类中的同名方法
*
* 下面案例的步骤:
* 1. 编写一个LiuDeHuaWarpper类, 实现Star接口,重写抽象方法
* 2. 提供LiuDeHuaWarpper类的有参构造, 传入LiuDeHua类对象
* 3. 在LiuDeHuaWarpper类中对需要增强的sing方法进行增强
* 4. 在LiuDeHuaWarpper类对不需要增强的方法调用LiuDeHua类中的同名方法
*
* */
interface start {
public void sing();
public void dance();
}
class liudehua implements start {
@Override
public void sing() {
System.out.println("刘德华在喝忘情水");
}
@Override
public void dance() {
System.out.println("刘德华喝醉了在走S步");
}
}
class mingx implements start {
liudehua ldh;
public mingx(liudehua ldh) {
this.ldh = ldh;
}
@Override
public void sing() { //增强
System.out.println("增强的代码");
ldh.sing();
}
@Override
public void dance() { //不需要增强
ldh.dance();
}
}
public class demo1 {
public static void main(String[] args) {
//目的增强mingx这个类的 sing方法。
liudehua a = new liudehua();
mingx x = new mingx(a);
x.dance();
x.sing();
}
}
标签:void,ldh,public,sing,设计模式,装饰,类中 来源: https://blog.csdn.net/qq_46079694/article/details/116563190
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。