zoukankan      html  css  js  c++  java
  • 排队系统实现

    让每个进入队伍的用户都能看到自己在 中所处的位置和变化。队伍可能随时有人加入和退出,当有人退出影响到用户的位置排名时需要即时反馈到用户

    设计模式观察者模式的典型实现场景

     1 import java.util.Iterator;
     2 import java.util.LinkedList;
     3 import java.util.List;
     4 
     5 /**
     6  * 排队系统实现
     7  * 让每个进入队伍的用户都能看到自己在 中所处的位置和变化。队伍可能随时有人加入和退出,当有人退出影响到用户的位置排名时需要即时反馈到用户
     8  * 使用观察者模式实现
     9  * @author GXF
    10  *
    11  */
    12 public class LineupSystem {
    13     //排队队列
    14     private List<People> queue = new LinkedList<People>();
    15     
    16     public static void main(String[] args) {
    17         LineupSystem lineupSystem = new LineupSystem();
    18         People peoples[] = new People[10];
    19         for(int i = 1; i < peoples.length; i++){
    20             peoples[i] = new People(lineupSystem, "zhangsan" + i);
    21             peoples[i].add();
    22         }
    23 
    24     }
    25     
    26     //入队
    27     public void add(People people){
    28         queue.add(people);
    29         notifyAllPeople();
    30     }
    31     //出队
    32     public void exit(People people){
    33         queue.remove(people);
    34         notifyAllPeople();
    35     }
    36     //通知队列里所有人的位置
    37     public void notifyAllPeople(){
    38         Iterator<People> it_people = queue.iterator();
    39         while(it_people.hasNext()){
    40             People temp = it_people.next();
    41             int index = queue.indexOf(temp);
    42             temp.setPosition(index + 1);
    43             temp.showPosition();
    44         }
    45     }
    46 
    47 }
    48 
    49 /**
    50  * 排队的人
    51  * @author GXF
    52  *
    53  */
    54 class People{
    55     //排队队列
    56     private LineupSystem queue;
    57     //在队列中位置
    58     private int position;
    59     private String name;
    60     
    61     public People(LineupSystem queue, String name){
    62         this.queue = queue;
    63         this.name = name;
    64     }
    65     
    66     //排队
    67     public void add(){
    68         queue.add(this);
    69     }
    70     //出队
    71     public void exit(){
    72         queue.equals(this);
    73     }
    74     //设置在队列中位置
    75     public void setPosition(int position){
    76         this.position = position;
    77     }
    78     //显示在队列中的位置
    79     public void showPosition(){
    80         System.out.println(name + " 在队列中的位置为: " + position);
    81     }
    82 }
  • 相关阅读:
    网上图书商城项目学习笔记-001工具类测试
    SpringMVC,MyBatis商品的增删改查
    3.Spring-用反射模拟IoC
    2.Sprng-IoC-Java反射例子
    1.Spring IoC简单例子
    HTML5 文件API(二)
    HTML5 文件API(一)
    HTML5 编辑 API 之 Range 对象(二)
    hdu 5384 Danganronpa
    hdu 3065 病毒侵袭持续中
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4689255.html
Copyright © 2011-2022 走看看