您现在的位置是:主页 > news > 泊头市建设局官方网站/软文写作的基本要求
泊头市建设局官方网站/软文写作的基本要求
admin2025/5/13 6:47:34【news】
简介泊头市建设局官方网站,软文写作的基本要求,深圳网站建设怎样容易,广州cms建站系统定义: 装饰模式可以动态的给一个对象增加一些额外的功能(增强功能) 相比于继承,装饰模式能对不支持继承的类进行增强;并且比继承更灵活,不需要生成大量的子类。 角色: Component抽象构件角色:真实对象和…
泊头市建设局官方网站,软文写作的基本要求,深圳网站建设怎样容易,广州cms建站系统定义:
装饰模式可以动态的给一个对象增加一些额外的功能(增强功能) 相比于继承,装饰模式能对不支持继承的类进行增强;并且比继承更灵活,不需要生成大量的子类。
角色:
Component抽象构件角色:真实对象和…
定义:
装饰模式可以动态的给一个对象增加一些额外的功能(增强功能) 相比于继承,装饰模式能对不支持继承的类进行增强;并且比继承更灵活,不需要生成大量的子类。
角色:
- Component抽象构件角色:真实对象和装饰对象有相同的接口。这样,客户端对象就能够以与真实对象相同的方式同装饰对象交互。
- ConcreteComponent具体构件角色:定义一个具体的对象,也可以给这个对象添加一些职责。
- Decorator装饰角色:持有一个抽象构件的引用。装饰对象接受所有客户端的请求,并把这些请求转发给真实的对象。这样,就能在真实对象调用前后增加新的功能。
- ConcreteDecorator具体装饰角色:负责给构件对象增加新的责任。Target匹配的接口。对Adaptee的接口与Target接口进行适配。
代码实现:
public abstract class House { String description = ""; public String getDescription() { return description; } public abstract void sleep();
}
public class MyHouse extends House { public MyHouse() { description = "自己的房子"; } @Override public void sleep() { return "在自己房子睡觉"; }
}
public abstract class BigHouseDecorator extends House { @Override public abstract String getDescription();
}
public class European extends BigHouseDecorator { House house ; public European(House house) { this.house = house; } @Override public String getDescription() { return house.getDescription()+"欧式装修"; } @Override public void sleep() { return "欧式装修,睡着更舒服"; }
}
@Test
public void testDecorator() {House house = new MyHouse(); System.out.println(house.getDescription() + " : " + house.sleep()); house = new European(house); System.out.println(house.getDescription()+" : " + house.sleep());
}
总结
本文主要介绍了装饰器模式的概念及其实现。一般情况下,为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。在不想增加很多子类的情况下扩展类,可以使用装饰器模式。
装饰器模式能够动态地为对象添加功能,是从一个对象外部来给对象添加功能,相当于改变了对象的外观。从外部使用系统的角度看,就不再是使用原始的那个对象了,而是使用被一系列装饰器装饰过后的对象。这样就能够灵活的改变一个对象的功能,只要动态组合的装饰器发生了改变,那么最终所得到的对象的功能就发生了改变。另一个好处是装饰器功能的复用,可以给一个对象多次增加同一个装饰器,也可以用同一个装饰器来装饰不同的对象。而且符合面向对象设计中的一条基本规则:”尽量使用对象组合,而不是对象继承”。
优点是:
- 比继承更灵活。继承是静态的,而且一旦继承所有子类都有一样的功能。而装饰模式采用把功能分离到每个装饰器中,然后通过对象组合的方式,在运行时动态的组合功能,每个被装饰的对象最终有哪些功能,是由运行期动态组合的功能决定的
- 更容易复用功能。有利于装饰器功能的复用,可以给一个对象多次增加同一个装饰器,也可以用同一个装饰器来装饰不同的对象
- 简化高层定义。装饰模式可以通过组合装饰器方式给对象增添任意多的功能,因此在进行高层定义的时候,只需要定义最基本的功能就可以了,需要的时候结合相应装饰器完成需要的功能
缺点:
- 多层装饰比较复杂