首页 > 其他分享 >10.25

10.25

时间:2024-11-20 10:22:55浏览次数:1  
标签:Colleague 10.25 mediator void message public String

中介者模式

下面是一个简单的示例,展示了如何在 Java 中实现中介者模式:

// 中介者接口
interface Mediator {
    void sendMessage(String message, Colleague colleague);
}

// 抽象同事类
abstract class Colleague {
    protected Mediator mediator;

    public Colleague(Mediator mediator) {
        this.mediator = mediator;
    }

    public abstract void receiveMessage(String message);
    public abstract void sendMessage(String message);
}

// 具体同事类A
class ConcreteColleagueA extends Colleague {
    public ConcreteColleagueA(Mediator mediator) {
        super(mediator);
    }

    public void receiveMessage(String message) {
        System.out.println("Colleague A received message: " + message);
    }

    public void sendMessage(String message) {
        mediator.sendMessage(message, this);
    }
}

// 具体同事类B
class ConcreteColleagueB extends Colleague {
    public ConcreteColleagueB(Mediator mediator) {
        super(mediator);
    }

    public void receiveMessage(String message) {
        System.out.println("Colleague B received message: " + message);
    }

    public void sendMessage(String message) {
        mediator.sendMessage(message, this);
    }
}

// 具体中介者类
class ConcreteMediator implements Mediator {
    private Colleague colleagueA;
    private Colleague colleagueB;

    public void setColleagueA(Colleague colleagueA) {
        this.colleagueA = colleagueA;
    }

    public void setColleagueB(Colleague colleagueB) {
        this.colleagueB = colleagueB;
    }

    public void sendMessage(String message, Colleague colleague) {
        if (colleague == colleagueA) {
            colleagueB.receiveMessage(message);
        } else if (colleague == colleagueB) {
            colleagueA.receiveMessage(message);
        }
    }
}

// 客户端代码
public class MediatorPatternExample {
    public static void main(String[] args) {
        ConcreteMediator mediator = new ConcreteMediator();

        ConcreteColleagueA colleagueA = new ConcreteColleagueA(mediator);
        ConcreteColleagueB colleagueB = new ConcreteColleagueB(mediator);

        mediator.setColleagueA(colleagueA);
        mediator.setColleagueB(colleagueB);

        colleagueA.sendMessage("Hello from Colleague A!");
        colleagueB.sendMessage("Hi from Colleague B!");
    }
}
 

标签:Colleague,10.25,mediator,void,message,public,String
From: https://www.cnblogs.com/luoqingci/p/18556275

相关文章

  • KubeSphere 社区双周报| 2024.10.25-11.07
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.10.25-11.07。贡献者名单新晋KubeSpherecontribu......
  • 停课日志 part1 2024.10.21-10.25
    10.21次短路1.dijkstra用两个dist数组记录最短路和次短路适用条件:严格/非严格非简单2.dijkstra跑出最短路,保存路径,枚举删除路径上每一条边,跑最短路记录最大值。适用条件:非严格简单3.从起点s和终点t分别跑出最短路d1,d2,枚举图中每一条边<u,v>,计算(d1[u]+d2[v]+边权)的次大......
  • 10.25
    软件设计实验三 [实验任务一]:加密算法目前常用的加密算法有DES(DataEncryptionStandard)和IDEA(InternationalDataEncryptionAlgorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。实验要求:  代码: MethodFactory.javapackagejiami;publicinterfaceMeth......
  • java学习10.25企业ERP生产计划管理系统(20分)
    今天成功的把这个项目写好了,就是文档中的一些具体的需求比较难写(由于之前没写过)所以项目能完成基本的增删改查和浏览操作。使用技术栈mybatis+thymeleft+mysql比较复杂,写的东西比较多,以后学了springboot会更简便一些整体架构具体页面源代码通过百度网盘分享的文件:企......
  • 10.25Python_pandas_函数(1)
    二、函数1、常用的统计学函数函数名称描述说明count()统计某个非空值的数量sum()求和mean()求均值median()求中位数std()求标准差min()求最小值max()求最大值abs()求绝对值prod()求所有数值的乘积案例:#创建一个示例DataFramedata={'A':[1,2,3,4,5],......
  • 杂题随笔 2024.10.25 两道图论
    最近在写abc375这场,最后的F和G是两道很典的图论题。https://atcoder.jp/contests/abc375/tasks/abc375_f题意:大致就是说给你一张图,有两种操作:第一种操作是把第i条边删掉,第二种操作是询问u,v两点的最短路。解法:这种题目印象里好像是考过几次了,把在线询问的顺序转变,倒着做,把减边......
  • 10.25
    实验2:简单工厂模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解简单工厂模式的动机,掌握该模式的结构;2、能够利用简单工厂模式解决实际问题。[实验任务一]:女娲造人使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则......
  • 活动报名丨实时互动AI 开发者年度聚会!RTE Open Day@RTE2024,10.25/26北京
         2024年10月25日~26日,由声网和RTE开发者社区联合主办的RTE2024第十届实时互联网大会将在北京·悠唐皇冠假日酒店正式开启! 大会以「AI爱」为主题,推出覆盖实时互联网全生态的论坛及周边活动共计20余场。 RTEOpenDay携手18家展区伙伴齐聚大......
  • 10.25随笔
    特殊条件1.空值判断:isnullSelect*fromempwherecommisnull;查询emp表中comm列中的空值。2.betweenand(在之间的值)Select*fromempwheresalbetween1500and3000;查询emp表中SAL列中大于1500的小于3000的值。注意:大于等于1500且小于等于30......
  • 10.25
    今日学习内容<%--CreatedbyIntelliJIDEA.TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</ti......