当前位置: 首页 > news >正文

网站建设课程小结二建证考试需要什么条件

网站建设课程小结,二建证考试需要什么条件,2023电商排行榜前十名,返回json数据的网站目录 一、场景1、题目 【[来源](https://kamacoder.com/problempage.php?pid1094)】1.1 题目描述1.2 输入描述1.3 输出描述1.4 输入示例1.5 输出示例 二、不采用中介者设计模式1 代码2 问题 三、中介者设计模式1 代码2 更好的例子 四、个人思考 一、场景 设计模式不是银弹1094)】1.1 题目描述1.2 输入描述1.3 输出描述1.4 输入示例1.5 输出示例 二、不采用中介者设计模式1 代码2 问题 三、中介者设计模式1 代码2 更好的例子 四、个人思考 一、场景 设计模式不是银弹而是特定场景的参考解法。例如在多人聊天室场景下不采用中介者模式系统会变得复杂。 1、题目 【来源】 1.1 题目描述 小明正在设计一个简单的多人聊天室系统有多个用户和一个聊天室中介者用户通过中介者进行聊天请你帮他完成这个系统的设计。 1.2 输入描述 第一行包括一个整数N,表示用户的数量1 N 100) 第二行是N个用户比如User1 User2 User3用空格分隔 第三行开始每行包含两个字符串表示消息的发出者和消息内容用空格分隔 1.3 输出描述 对于每个用户输出一行包含该用户收到的所有消息内容。 1.4 输入示例 3 User1 User2 User3 User1 Hello_All! User2 Hi_User1! User3 How_is_everyone? 1.5 输出示例 User2 received: Hello_All! User3 received: Hello_All! User1 received: Hi_User1! User3 received: Hi_User1! User1 received: How_is_everyone? User2 received: How_is_everyone? 二、不采用中介者设计模式 1 代码 将聊天室的人定义为User public class User {private ListUser friends;private String name;public User(String name) {this.name name;friends new ArrayList();}public void addFriend(User user) {friends.add(user);}public void sendMessage(String message) {friends.forEach(user - user.receiveMessage(message));}private void receiveMessage(String message) {System.out.println(name received: message);} }客户端 public class Application {public static void main(String[] args) {Scanner scanner new Scanner(System.in);MapString, User userMap new TreeMap();int n scanner.nextInt();for (int i 0; i n; i) {String name scanner.next();User user new User(name);userMap.put(name, user);}ListUser users new ArrayList(userMap.values());users.stream().forEach(user - {for (User friend : users) {if (!user.equals(friend)) {user.addFriend(friend);}}});for (int i 0; i n; i) {String name scanner.next();String message scanner.next();userMap.get(name).sendMessage(message);}} }2 问题 现在聊天室里就3个人只要1个人发消息其他人都能收到。如果有人退群了或者有新朋友加群了都需要重新维护关系 ListUser users new ArrayList(userMap.values()); users.stream().forEach(user - {for (User friend : users) {if (!user.equals(friend)) {user.addFriend(friend);}} });当一个实体例如User状态变化时会影响其他实体不应该由实体本身来维护这种复杂关系。实体只需关心自己的状态变化即可。 这就需要中介者设计模式。 三、中介者设计模式 1 代码 用户 public interface Colleague {void receive(String message);String gotName(); }public class User implements Colleague {private final String name;public User(String name) {this.name name;}Overridepublic void receive(String message) {System.out.println(name received: message);}Overridepublic String gotName() {return name;} }中介者 public interface Mediator {void add(Colleague colleague); }public class ChatRoom implements Mediator {private ListColleague colleagues;public ChatRoom() {this.colleagues new ArrayList();}Overridepublic void add(Colleague colleague) {colleagues.add(colleague);}public void send(String message, Colleague colleague) {colleagues.stream().filter(c - !StringUtils.equals(c.gotName(), colleague.gotName())).forEach(c - c.receive(message));} }客户端 public class Application {public static void main(String[] args) {Scanner scanner new Scanner(System.in);ChatRoom chatRoom new ChatRoom();int n scanner.nextInt();for (int i 0; i n; i) {String name scanner.next();chatRoom.add(new User(name));}for (int i 0; i n; i) {String name scanner.next();String message scanner.next();chatRoom.send(message, new User(name));}} }2 更好的例子 廖雪峰老师在介绍中介者模式时举的例子更好 多选框会影响Select All、Select None的按钮状态。 例如多选框勾选后Select None按钮便会亮起 多选框不应该去关心Select None按钮的状态这就需要中介者模式来处理了。 多选框状态变化后中介者“收到变化消息”如果需要更改按钮的状态则去更改状态。代码 public class Mediator {// 引用UI组件:private ListJCheckBox checkBoxList;private JButton selectAll;private JButton selectNone;private JButton selectInverse;public Mediator(ListJCheckBox checkBoxList, JButton selectAll, JButton selectNone, JButton selectInverse) {......// 绑定事件:this.checkBoxList.forEach(checkBox - {checkBox.addChangeListener(this::onCheckBoxChanged);});this.selectAll.addActionListener(this::onSelectAllClicked);this.selectNone.addActionListener(this::onSelectNoneClicked);this.selectInverse.addActionListener(this::onSelectInverseClicked);}// 当checkbox有变化时:public void onCheckBoxChanged(ChangeEvent event) {boolean allChecked true;boolean allUnchecked true;for (JCheckBox checkBox : checkBoxList) {if (checkBox.isSelected()) {allUnchecked false;} else {allChecked false;}}selectAll.setEnabled(!allChecked);selectNone.setEnabled(!allUnchecked);}// 当点击select all:public void onSelectAllClicked(ActionEvent event) {checkBoxList.forEach(checkBox - checkBox.setSelected(true));selectAll.setEnabled(false);selectNone.setEnabled(true);}// 当点击select none:public void onSelectNoneClicked(ActionEvent event) {checkBoxList.forEach(checkBox - checkBox.setSelected(false));selectAll.setEnabled(true);selectNone.setEnabled(false);}// 当点击select inverse:public void onSelectInverseClicked(ActionEvent event) {checkBoxList.forEach(checkBox - checkBox.setSelected(!checkBox.isSelected()));onCheckBoxChanged(null);} }四、个人思考 当我们对场景建模后发现实体们呈现类似如下关系时 我们就需要引入中介来统筹实体们的相互影响。 实体1变化了发消息给中介中介收到后去改变实体4和实体2的状态。 中介者 public interface Mediator {... }public class xxx implements Mediator {... }各种实体 public interface Colleague {... }public class yyy implements Colleague {... }
http://www.pierceye.com/news/886469/

相关文章:

  • 银川公司网站建设zepto网站开发
  • 看谁做的好舞蹈视频网站电话营销
  • 开封建网站到哪里学平面设计
  • 电子商务与网站建设实践论文化工行业网站建设
  • 如何搭建一个网站平台卖16斤肉赚200元
  • 手机主页网站推荐江宁城乡建设局网站
  • 甜品网站设计论文张家界seo
  • 单位网站及政务新媒体建设管理wordpress刷留言
  • 用花瓣网站上的图片做游戏行吗西安霸屏推广
  • 单片机和做网站医疗网站建设渠道
  • 上海做家纺的公司网站新闻发布稿
  • 广告网站大全扁平化网站psd
  • wordpress开启多站点那个网站可以做宣传
  • 专门建站的公司本网站正在建设升级中
  • 花市小说网站那里进建网站的公司哪里有
  • 自建网站服务器备案免费做易拉宝网站
  • 经典手机网站家政公司网站模板
  • 外贸做的亚马逊网站是哪个好产品怎样推广有效
  • 网站后台数据库备份怎么做怎样在阿里做网站
  • 后台网站手机版视频怎么做安阳百姓网
  • 设计公司网站公司详情域名解析网站登录
  • 优秀学校网站设计可以免费下源码的网站
  • 榆林高端网站建设xampp使用教程 wordpress
  • 站长工具搜一搜找做网站的
  • 建一个域名网站要多少钱南京哪里有做网站的
  • 网站群的建设网站建设自助建站制作
  • 怎么做网站程序标书制作教程全过程
  • 学网站建设前景印度做杂质的网站
  • 网站的建设意义盐城网站建设找哪家好
  • 赤峰市网站建设年轻人免费在线看视频