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

seo技术 快速网站排名手机做网站用什么

seo技术 快速网站排名,手机做网站用什么,ASP.NET网站建设实战,国内wordpress例子行为型模式-观察者模式 8.1观察者模式:arrow_up::arrow_up::arrow_up:8.1.1概念8.1.2场景8.1.3优势 / 劣势8.1.4观察者模式可分为观察者的基本结构#xff1a; 8.1.5观察者模式8.1.6实战8.1.6.1题目描述8.1.6.2输入描述8.1.6.3输出描述8.1.6.4代码 8.1.7总结 8.1观察者模式⬆️… 行为型模式-观察者模式 8.1观察者模式:arrow_up::arrow_up::arrow_up:8.1.1概念8.1.2场景8.1.3优势 / 劣势8.1.4观察者模式可分为观察者的基本结构 8.1.5观察者模式8.1.6实战8.1.6.1题目描述8.1.6.2输入描述8.1.6.3输出描述8.1.6.4代码 8.1.7总结 8.1观察者模式⬆️⬆️⬆️ 8.1.1概念 ​ 观察者模式定义了一种一对多的依赖关系让多个观察者对象同时监听某一个主题对象当主题对象状态发生变化时会通知所有依赖它的观察者对象使它们都能够得到通知并且被自动更新 8.1.2场景 ​ 在我们生活中用户可以在音乐播放平台关注多个歌手而当有歌手发布新的歌曲时可以将歌曲发布到音乐播放平台而平台会将新的歌曲详细信息发送给关注该歌手的用户。而此时歌手就相当于是观察者模式的主题对象每个关注的用户则是观察者模式中的观察者对象通过该模式用户可以很及时的听到歌手的新歌曲而歌手也可以很轻松的通知用户新歌曲的发布。 8.1.3优势 / 劣势 灵活性提供了灵活的观察者注册机制可以随时添加或删除观察者使得系统更加灵活和可扩展自动更新当被观察者的状态发生改变时所有依赖它的观察者都会自动收到通知并更新提高了系统的自动化程度 性能影响当被观察者的状态发生改变时所有观察者都会收到通知并且进行相应的通知可能导致大量的通知和计算影响系统性能通知竞态条件若多个线程同时修改被观察者的状态可能会产生竞态条件导致某些观察者未能及时收到通知或收到错误的通知 8.1.4观察者模式可分为 主题Subject就是被观察的对象可以维护一组观察者当主题本身发生改变时就会通知观察者观察者Observer观察主题的对象当被观察的主题发生变化时观察者就会得到通知并执行相应的处理 观察者的基本结构 主题Subject一般会定义成一个接口提供方法用于注册、删除、通知观察者通常也包含一个状态当状态发生改变时通知所有的观察者观察者Observer观察者也需要实现一个接口包含一个更新方法在接收主题通知时执行对应的操作具体主题ConcreteSubject主题的具体实现维护一个观察者列表包含了观察者的注册、删除、通知方法具体观察者ConcreteObserver观察者接口的具体实现每个具体 8.1.5观察者模式 package com.technologystatck.designpattern.mode.observer;import java.util.ArrayList; import java.util.List;public class Observers {public static void main(String[] args) {//创建具体主题对象ConcreteSubject concreteSubject new ConcreteSubject();//创建具体观察者对象Observer concreteObserverA new ConcreteObserver();Observer concreteObserverB new ConcreteObserver();//注册观察者concreteSubject.registerObserver(concreteObserverA);concreteSubject.registerObserver(concreteObserverB);//调用主题方法concreteSubject.setState(有新的观察者注册);} }//主题接口(主题) interface Subject{//注册观察者void registerObserver(Observer observer);//移除观察者void removeObserver(Observer observer);//通知观察者void notifyObserver(); }//观察者接口(观察者) interface Observer{//更新方法void update(String message); }//具体主题实现 class ConcreteSubject implements Subject{//观察者列表private ListObserver observers new ArrayList();//状态private String state;//注册观察者方法(注册)Overridepublic void registerObserver(Observer observer) {observers.add(observer);}//移除观察者方法(移除)Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}//通知观察者方法(通知)//遍历观察者列表并通知每个观察者更新状态Overridepublic void notifyObserver() {for (Observer observer : observers) {observer.update(state);}}//更新状态public void setState(String state) {this.state state;notifyObserver();} } //具体观察者实现 class ConcreteObserver implements Observer{//更新方法Overridepublic void update(String message) {System.out.println(message);} } 8.1.6实战 8.1.6.1题目描述 小明所在的学校有一个时钟主题每到整点时它就会通知所有的学生观察者当前的时间请你使用观察者模式实现这个时钟通知系统。 注意点时间从 0 开始并每隔一个小时更新一次。 8.1.6.2输入描述 输入的第一行是一个整数 N1 ≤ N ≤ 20表示学生的数量。 接下来的 N 行每行包含一个字符串表示学生的姓名。 最后一行是一个整数表示时钟更新的次数。 8.1.6.3输出描述 对于每一次时钟更新输出每个学生的姓名和当前的时间。 8.1.6.4代码 package com.technologystatck.designpattern.mode.observer;import java.util.ArrayList; import java.util.List; import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 读取学⽣数量int N scanner.nextInt();// 创建时钟Clock clock new Clock();// 注册学⽣观察者for (int i 0; i N; i) {String studentName scanner.next();clock.registerObserver(new Student(studentName));}// 读取时钟更新次数int updates scanner.nextInt();// 模拟时钟每隔⼀个⼩时更新⼀次for (int i 0; i updates; i) {clock.tick();}} }// 观察者接⼝ interface Observer {void update(int hour); } // 主题接⼝ interface Subject {void registerObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers(); } // 具体主题实现 class Clock implements Subject {private ListObserver observers new ArrayList();private int hour 0;Overridepublic void registerObserver(Observer observer) {observers.add(observer);}Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(hour);}}public void tick() {hour (hour 1) % 24; // 模拟时间的推移notifyObservers();} } // 具体观察者实现 class Student implements Observer {private String name;public Student(String name) {this.name name;}Overridepublic void update(int hour) {System.out.println(name hour);} } 8.1.7总结 优点可以灵活的增加 / 删除观察者对象而不影响其他相关对象的功能总结定义一对多的依赖关系让多个观察者对象同时监听某一主题对象的状态变化实现自动更新场景适用于一个对象的状态变化会影响到其他对象并且希望这些对象在状态变化时能够自动更新的情况
http://www.w-s-a.com/news/922787/

相关文章:

  • 上海创意型网站建设icp备案网站信息
  • 网站没收录中山手机网站制作哪家好
  • 代驾软件开发流程wordpress 博客主题 seo
  • 成都的教育品牌网站建设网站广告js代码添加
  • 网站找人做seo然后网站搜不到了网站建设seoppt
  • 做网站优化有用吗学做文案的网站
  • wordpress 知名网站怎么做微网站
  • 用电脑怎么做原创视频网站河南建设工程信息网一体化平台官网
  • 云服务器和网站空间郑州做招商的网站
  • 规模以上工业企业的标准北京seo结算
  • 软件开发过程模型如何做网站性能优化
  • 网站建站公司广州南京江北新区楼盘
  • 哪些做展架图的网站好开发公司2022年工作计划
  • 磨床 东莞网站建设wordpress下载类主题系统主题
  • 免费学编程网站芜湖做网站都有哪些
  • 能发外链的网站门户网站网页设计规范
  • 网站建设所需人力南城区网站建设公司
  • 网站做图尺寸大小手机模板网站模板下载网站有哪些内容
  • 德阳市建设管理一体化平台网站做美食网站
  • 怎么做自己的推广网站2024年瘟疫大爆发
  • vps正常网站打不开linux网站建设
  • 福州网站快速排名在一个网站的各虚拟目录中默认文档的文件名要相同
  • 网站开发 流程图网站开发用哪个linux
  • 怎么用自己电脑做服务器发布网站吗seo门户网价格是多少钱
  • 备案网站可以做影视站网站400
  • 四川住房与城乡建设部网站注册登记
  • 网站建设第三方沈阳工程最新动态
  • 兰州做网站客户上海企业在线登记
  • 新乡公司做网站wordpress被大量注册
  • 小语种服务网站公众号平台建设网站