设计模式之代理模式

代理模式

代理模式是设计模式的一种,也非常常出现在我们的生活中,大家都经历过校园生活,所以我打算拿代课老师与老师的例子去做说明已帮助同学们理解。

情景:年段长要安排授课计划给学生,找了老师,但是老师说我今天有事上不了课,年段长很是无奈就想了个办法,找一个代课老师让他代替今天老师去跟学生讲他今天要讲给学生的内容。UML 类图如下:

UML类图

  • 解释说明: 有一个 ITeacher 的接口,该接口有一个 teaching()的方法。代课老师和老师都实现了该方法,就表示了代课老师和老师都有上这节课的能力。但是代课老师不知道老师这节课要讲啥内容,所以需要聚合于老师,然后在 teaching()方法里调用老师的teaching()方法,以确保上课内容就是老师要讲的内容。这些关系建立起来后,年段长就可以安排代课老师进行授课计划啦。
package com.example.designpattern.proxy;

/**
 * @Description: 可以授课的接口
 */
public interface ITeacher {
     void teaching();
}

package com.example.designpattern.proxy;

/**
 * @Description: 老师类
 */
public class Teacher implements ITeacher{
    @Override
    public void teaching() {
        System.out.println("讲知识....");
    }
}

package com.example.designpattern.proxy;

/**
 * @Description: 代理老师类
 */
public class TeacherProxy implements ITeacher{

    private Teacher teacher;

    public TeacherProxy(Teacher teacher) {
        this.teacher = teacher;
    }

    @Override
    public void teaching() {
        System.out.println("我是代课老师开始讲这节课知识");
        // 这里的知识点是从编内老师那边学到的
        teacher.teaching();
        System.out.println("我是代课老师讲完这节课知识");

    }
}

package com.example.designpattern.proxy;

import org.junit.jupiter.api.Test;

/**
 * @PackageName: com.example.designpattern.proxy
 * @ClassName: TeacherLeader
 * @Description: 管理老师的类,类似于年段长
 */
public class TeacherLeader {

    /**
     * @Description: 安排一下咯
     */
    @Test
    public void arrange(){
        Teacher teacher = new Teacher();
        TeacherProxy teacherProxy = new TeacherProxy(teacher);
        teacherProxy.teaching();
    }
}

  • 输出
Connected to the target VM, address: 'javadebug', transport: 'shared memory'

我是代课老师开始讲这节课知识
讲知识....
我是代课老师讲完这节课知识

Disconnected from the target VM, address: 'javadebug', transport: 'shared memory'

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值