java设计模式十三(装饰模式)

java设计模式—装饰模式

一.概述

装饰模式是指在以一个已有类作为基础,创建一个更多功能的装饰类,这个装饰类是作为现有类的一个包装。这点有点像一个子类继承一个父类,但比继承更灵活。

二.模式示例:

假设我们有个学生类(Student),学生的职责是学习,而值日生除了学习还有一些值日的工作(如檫黑板)。在这种情况下,学生可以作为一个基类,而值日生就是一个装饰类,具体代码实现如下:

1.创建学生接口

public interface IStudent {
    public void study();
}

2.创适学生类

public class Student implements IStudent{   

    @Override
    public void study() {
        System.out.println("学习");
    }
}

3.创建学生抽象装饰类。

public abstract class StudentDecorator implements IStudent{

    protected IStudent student;

    public StudentDecorator(IStudent student){
        this.student = student;
    }

    @Override
    public void study() {
        student.study();
    }
}

4.创建值日生类

public class DutyStudent extends StudentDecorator{

    public DutyStudent(IStudent student) {
        super(student);     
    }

    @Override
    public void study() {
        student.study();
        this.onDuty();
    }

    private void onDuty(){
        System.out.println( "今天值日");
    }           
}

5.模式调用

public class Test {
    public static void main(String[] args) {
        DutyStudent duty = new DutyStudent(new Student());
        duty.study();
    }
}

猜你喜欢

转载自blog.csdn.net/xiaolicd/article/details/81357167
今日推荐