A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

各位师兄帮我看下这段代码。
class SuperPerson{
private person P;
SuperPerson(Person p){
this.p=p;}
public void superchifan(){
System.out.println("开胃菜“);
p.chifan();
System.out.println("甜点“);}
}
这是毕老师IO中讲装饰设计模式举例的一段代码,我想问一下为什么要写这段代码:private person P;
SuperPerson(Person p){
this.p=p;}如果不写 不是也可以直接调用下面的Superchifan();方法吗?有什么区别?谢谢大家 同时祝大家新年快乐。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

1 个回复

倒序浏览
这一集我也看过,还记得一点点。
他说:装饰模式就是对原来类的增强,这样就不用修改原有的类,实现松耦合。
既然是对原有类的增强,就还是要用到原有类的对象撒,所以在装饰类里声明一个成员变量person【被装饰类】,然后通过构造函数把person对象传进来,方便调用他的方法。
  1. public void superchifan(){
  2. System.out.println("开胃菜“);
  3. p.chifan();
  4. System.out.println("甜点“);}
  5. }
复制代码


纵然是超级吃饭,总归还是要吃饭的。
装修房屋,不可能说你只要家具,不要房子,对吧。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马