昨晚上很好的玩儿了一下,还一不小心因为不会办事儿得罪了人,哎。自己的情商有些太低了自己慢慢练吧。反正得罪就得罪了~~
<span style="font-size:18px;">public class PersonDemo {
public static void main(String[] args) {
Person p = new Person();
// p.chifan();
//不用重新建立一个类
NewPerson p1 = new NewPerson(p); //装饰思想
p1.chifan();
NewPerson2 p2 = new NewPerson2();
p2.chifan();
}
}
class Person{
void chifan(){
System.out.println("吃饭");
}
}
//装饰,这个类的出现是为了对吃饭功能进行增强
class NewPerson{
private Person p;
NewPerson(Person p){ //构造函数的时候,将p加入
this.p = p;
}
public void chifan(){
System.out.println("开胃酒");
p.chifan();
System.out.println("甜点");
}
}
//继承也可以实现这个功能,
class NewPerson2 extends Person{
public void chifan(){
System.out.println("开胃酒");
super.chifan();
System.out.println("甜点");
}
}
/*装饰设计模式和继承都能实现一样的特定进行功能的扩展增强,那么两者有什么区别,哪个好点呢?
*继承体系:
*父类Writer:
* |----文本TextWriter 媒体MediaWriter
*想对操作的工作进行效率的提高。
*按照面向对象,通过继承对具体的对象那个进行功能的扩展
*效率提高就需要就如缓冲区技术
* |----文本TextWriter
* |----BufferedTextWriter:加入了缓冲技术的操作文本的对象
* |----媒体MediaWriter
* }----BufferedMediaWriter:加入了缓冲技术的操作媒体的对象
*到这里可以了。 但是这样做好像不理想。
*如果这个体系进行功能扩展,又多了流对象。这个流要提供效率,又必须产生子类。
*这是就会发现,只是为提高功能进行的继承,导致继承体系越来越臃肿。
*
*装饰比继承灵活
*特点:装饰类和被装饰类都必须所属同一接口或父类
*/
</span>
好吧,我发现我的this的功能有忘了,下一节复习一下this。