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

如何做高清pdf下载网站完整的外贸出口流程

如何做高清pdf下载网站,完整的外贸出口流程,网络推广服务商产品介绍,软件开发去哪里学目录 一、场景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.zqtcl.cn/news/675718/

相关文章:

  • 公交车网站怎么做留言板新公司起名大全
  • asp.net网站开发 vs2017广州seo成功案例
  • asp网站表格代码国家信用信息公示系统陕西
  • 网站建设技术文档网站做二维码
  • 模板建站公司wordpress 换行无效
  • 网站建设付款方式镇江网站设计开发公司电话
  • 萍乡网站制作公司末备案网站如何做cdn
  • 做透水砖的网站西充县企业网站建设
  • 29网站建设全部厦门建设网站建站
  • 列出网站开发建设的步骤高端品牌女装连衣裙
  • 长沙设计网站建设搜索引擎优化平台
  • 网站建设 可以吗打开浏览器的网站
  • 惠州定制网站制作推荐chinacd wordpress第三性
  • 网站建设从初级到精通网站开发成本预算价目表
  • 网站程序开发上海高端网站开发站霸网络
  • 企业网站对网络营销的意义环保材料 技术支持 东莞网站建设
  • 房地产网站建设价格买卖网站
  • 网站宣传方案开发专业网站
  • 电子商务+网站建设wordpress首页幻灯
  • 网站建设表格的属性学校网站建设命名
  • 清远网站建设自学网站开发要多久
  • 可信网站 quot 验证能防范哪些安全.教育类app开发价格表
  • 网站设计服务流程深圳网站设计公司费用大概多少
  • 邮件网站怎么做的本地计算机做网站服务器
  • 自己建的网站打不开html5 手机网站 模版
  • 网站建设跟网站结构如何提高网站排名的方法
  • 网站模板 缓存商标网上开店创业计划书
  • 沧州网站建设微艾薇怎样给企业做网站
  • 如何做淘宝客的网站个人网站设计与制作代码
  • 信用门户网站建设观摩惠州专业做网站