• java观察者模式


    观察者设定一个观察目标,根据观察目标的变化,观察者采取相应的应对行为---观察者模式

     1 //玩家类
     2 public class Player {
     3     
     4     private String name;
     5     private Team t;
     6     
     7     public Player(String name){
     8         this.name = name;
     9     }
    10     
    11     public String getName(){
    12         return name;
    13     }
    14     
    15     public void setTeam(Team t){
    16         this.t= t;
    17     }
    18     
    19     //如果玩家被攻击,通知游戏中心进行呼救
    20     public void beAttacked(Controller c){
    21         System.out.println(name + "被攻击~速来援助~");
    22         c.noticeOther(t,name);
    23         
    24     }
    25 
    26     //用来援助队友的
    27     public void help(){
    28         System.out.println("挺住!" + name + "来也~~~");
    29     }
    30 }
    31 
    32 //战队类
    33 import java.util.ArrayList;
    34 import java.util.List;
    35 
    36 public class Team {
    37     
    38     @SuppressWarnings("unused")
    39     private String name;
    40     
    41     private List<Player> players = new ArrayList<Player>();
    42     
    43     public Team(String name){
    44         this.name = name;
    45         System.out.println(name + "战队组建成功!");
    46     }
    47     
    48     public void join(Player p){
    49         this.players.add(p);
    50         p.setTeam(this);
    51     }
    52 
    53     public void help(String name) {
    54         for (Player player : players) {
    55             if (!player.getName().equals(name)) {
    56                 player.help();
    57             }
    58         }
    59     }
    60 
    61 }
    62 
    63 //游戏中心
    64 public class Controller {
    65         
    66     public void noticeOther(Team t,String name){
    67         t.help(name);
    68     }
    69 
    70 }
    71 
    72 
    73 //
    74 public class ObserverTestDemo {
    75 
    76     public static void main(String[] args) {
    77 
    78         Controller c = new Controller();
    79 
    80         Team t = new Team("金庸");
    81 
    82         Player p1 = new Player("令狐冲");
    83         t.join(p1);
    84         Player p2 = new Player("张无忌");
    85         t.join(p2);
    86         Player p3 = new Player("东方不败 ");
    87         t.join(p3);
    88         Player p4 = new Player("杨过");
    89         t.join(p4);
    90 
    91         p1.beAttacked(c);
    92     }
    93 
    94 }
  • 相关阅读:
    阅读cuda docs best practice
    JS: 模拟async/await语法糖
    JS版数据结构链表
    处理Vite项目首屏加载响应迟缓和二次刷新的问题
    JS中构造函数与Class类的区别
    JS数据结构循环队列
    使用WangEditor4+KityFormula处理公式编辑业务(小记)
    Soon is not as good as now
    自定义toString()方法检测对象类型时的返回值[object x](JS)
    如果给Array.prototype.fill()方法传入1个引用类型的填充对象
  • 原文地址:https://www.cnblogs.com/tongxuping/p/6832530.html
Copyright © 2020-2023  润新知