黑马程序员技术交流社区

标题: 【济南校区】浅谈设计模式-装饰者设计模式 [打印本页]

作者: 小鲁哥哥    时间: 2018-1-12 11:52
标题: 【济南校区】浅谈设计模式-装饰者设计模式
本帖最后由 小鲁哥哥 于 2018-1-12 16:41 编辑

【济南校区】装饰者模式

今天和大家聊一聊装饰者设计模式,这个模式会经常在我们的代码中出现,所以我们分为两部分去讲,第一部分和大家聊一聊什么是装饰者模式,以及我们应用的场景。
装饰者模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰者模式比生成子类更为灵活。
我们先给大家展示一下装饰者模式的结构图:
Compontent是定义了一个对象接口,可以给这些对象动态的添加职责。ConcreteConponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator是装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在的,至于ConcreteDecorator就是具体的装饰对象,起到给Component添加职责的功能。
给大家看一下具体的代码实现:
[Java] 纯文本查看 复制代码
/**
* Component
*/
public abstract class Component {
public abstract void Operation();//定义一个对象接口
}

/**
* 具体实现类
*
*/
class ConcreteComponent extends Component{

@Override
public void Operation() {
System.out.print("定义一个具体的操作对象");
}
}

/**
* 装饰抽象类
*
*/
abstract class Decorator extends Component{
protected Component component;
public void SetComponent(Component component){
this.component = component;
}
@Override
public void Operation() {
//重写Operation,执行Component的Operation方法
if(component!=null){
component.Operation();
}
}
}

/**
* 具体的装饰对象类
*/
class ConcreteDecorator extends Decorator{
private String aaa = "本类独有的属性";
@Override
public void Operation() {
super.Operation();//先运行父类的Operation方法
System.out.print("aaa");
}
}
大家可以通过上诉的简单代码先简单了解一些什么是装饰者模式,下一章我们在详细接触这个设计模式。

【黑马程序员济南】小鲁哥哥全学科技术整合帖(一贴在手!天下我有!)
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
     黑马程序员济南中心联系电话:0531-55696830


作者: Yin灬Yan    时间: 2018-1-12 18:37
我来占层楼啊   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2