首页 > 其他分享 >11.2

11.2

时间:2024-11-20 10:22:02浏览次数:1  
标签:Observer observer void 11.2 subject public String

观察者模式

下面是一个简单的观察者模式的示例代码,使用Java语言实现:

import java.util.ArrayList;
import java.util.List;

// 观察者接口
interface Observer {
    void update(String message);
}

// 具体观察者类
class ConcreteObserver implements Observer {
    private String name;

    public ConcreteObserver(String name) {
        this.name = name;
    }

    @Override
    public void update(String message) {
        System.out.println(name + " 收到消息:" + message);
    }
}

// 主题接口
interface Subject {
    void attach(Observer observer);
    void detach(Observer observer);
    void notifyObservers(String message);
}

// 具体主题类
class ConcreteSubject implements Subject {
    private List<Observer> observers = new ArrayList<>();

    @Override
    public void attach(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void detach(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

// 测试类
public class ObserverPatternExample {
    public static void main(String[] args) {
        Subject subject = new ConcreteSubject();

        Observer observer1 = new ConcreteObserver("Observer 1");
        Observer observer2 = new ConcreteObserver("Observer 2");
        Observer observer3 = new ConcreteObserver("Observer 3");

        // 添加观察者
        subject.attach(observer1);
        subject.attach(observer2);
        subject.attach(observer3);

        // 发送通知
        subject.notifyObservers("Hello, observers!");

        // 移除观察者
        subject.detach(observer2);

        // 发送通知
        subject.notifyObservers("Hello again!");
    }
}

标签:Observer,observer,void,11.2,subject,public,String
From: https://www.cnblogs.com/luoqingci/p/18556281

相关文章

  • 11.20
    以人为本与团队精神摘要:在当今快速发展的软件行业中,企业文化的作用愈发重要。本文探讨了软件企业文化的各个方面,特别是“以人为本”和“团队精神”在提升员工满意度、促进团队合作和增强创新能力方面的重要性。通过分析不同公司的文化实践,如Google的“20%时间”政策、Microsoft的......
  • 11.18 ~ 11.24
    11.18困......
  • 2024.11.2 2024ICPC成都站
    Solved:7/13Penalty:793Rank:40Rank(ucup):152L.RecoverStatistics输出50个P50、45个P95,4个P99和1个P99+1即可。#include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(0);cin.tie(0);inta,b,c;cin>>a>&g......
  • 2024.11.2 模拟赛
    2024.11.2模拟赛T1P11242碧树把\(n\)个点往外连即可。最终答案为\(n-\max_{i=1}^na_i+1\)T2P11243繁花感觉我的做法麻烦了,而且随机复杂度()显然的,从左往右看可以分层,遇到一次大于号分一次。对于每段,遍历一遍,每遇到一次小于号计算一次答案。如果不考虑等于号,这段的......
  • 11.2
    实验6:原型模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解原型模式的动机,掌握该模式的结构;2、能够利用原型模式解决实际问题。 [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比......
  • 11.2
     #include<cmath>#include<iostream>usingnamespacestd; classVector{private:    double*array=newdouble[4];    doublelength;public:    Vector(doublearr[4])    {        this->array[0]=arr[0];        this->a......
  • 24.11.2
    (填空题)软件复用的优点有()、()、()、()。(1)提高生产率(2)减少维护代价(3)提高互操作性(4)支持快速原型2. (填空题)依据复用的对象,软件复用分为()和()。(1)产品复用(2)过程复用3. (填空题)最常用的可复用设计是()和()。(1)架构模式(2)设计模式4. (填空题)框架方法包括:()......
  • VectorDraw Developer Framework 11.2.1
    VectorDrawDeveloperFramework(VDF)suiteisacombinationofcomponentsdesignedtocovertheneedsofyourapplication.It'smaincomponentisagraphicsengine-librarythatcanbeusedfromdevelopersinordertovisualizetheirapplications.With......
  • 闲话 11.2
    也是打上搜了。小木棍曾经在题库上做过,数据水就过了,交洛谷发现只有87pts。《剪枝盛宴》钦定长度:最小肯定是最长的那根木棍,最长肯定是所有木棍的总和,并且这个长度一定只能是总和的因数。选择顺序:如果选一个长的合法,那么选若干个和相同的短的一定合法但不优,因此按长度倒......
  • 11.2 炼石模拟赛
    T1贪心即可。T2考虑贪心。观察1不能出玩偶的机子应该最后修。所有钦定不出玩偶的机子都是平凡的,就是假在这里了!观察2所有人一起修机是最优的。观察3对于所有钦定出玩偶的机子,应该按照\(b\)数组从小到大排序后修理。有以上的观察,不难发现应该按照\(b\)数组排序。......