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

网站建设算什么专业自学网页设计的网站

网站建设算什么专业,自学网页设计的网站,百度一下点击搜索,新乡做网站的前言 作者在准备秋招中#xff0c;学习设计模式#xff0c;做点小笔记#xff0c;用宝可梦为场景举例#xff0c;有错误欢迎指出。 观察者模式 观察者模式定义了一种一对多的依赖关系#xff0c;一个对象的状态改变#xff0c;其他所有依赖者都会接收相应的通知。 所…前言 作者在准备秋招中学习设计模式做点小笔记用宝可梦为场景举例有错误欢迎指出。 观察者模式 观察者模式定义了一种一对多的依赖关系一个对象的状态改变其他所有依赖者都会接收相应的通知。 所以 何时使用: 一个对象的状态改变其他所有依赖对象都要知道意图: 定义一种一对多的依赖关系一个对象状态改变所有其他对象都要得到通知主要解决: 在降低耦合的基础上实现一对多的协作 观察者模式中存在四种角色 主题 (Subject): 被观察者它要有能通知的状态要维护一个观察者列表。观望者(Observer): 观察者接收主题的通知。需要有一个更新方法接收到主题状态改变后调用。具体主题(Concrete Subject): 主题的实现类。具体观察者(Concrete Observer): 观察者的实现类实现更新方法。 是不是觉得四种角色突然被引入十分抽象别急看看下面的故事。 1. 情景模拟 现在宝可梦研究所业务如日中天人人都想开个研究所狠狠地赚一笔。 但是想要开宝可梦研究所那肯定得先把宝可梦研究透啊怎么研究呢先抓回来 所以新开的小木博士研究所就打算把关都地区和城都地区的宝可梦都给抓来再说。 小木博士决定雇点训练家来抓宝可梦于是大量的训练家都来兼职。 作为亲属的小智和小茂也来兼职帮个忙小智负责关都地区小茂负责成都地区。 为了控制成本每种宝可梦抓一只就够了所以每当一个训练家抓到一个精灵就要通知一下其他同行 某个地区已经抓住了多少个精灵啦总共还剩多少个以免大家抓到重复。 (当然因为小智和小茂是家属所以开点小灶只通知了他俩。) 于是可以引入了观察者模式的各个对象 主题: 研究所的业务观察者: 训练家具体主题: 抓宝可梦的任务具体观察者: 负责不同地区的训练家 2. 代码 先随便定义一个主题的接口 public interface SubjectLab { }定义观察者的接口即训练家其中观察者依赖他要观察的Subject类 /*** 训练家*/ public abstract class ObserverTrainer {protected SubjectPokedex subject;public abstract void update(); }小智和小茂分别负责各自地区 public class Satoshi extends ObserverTrainer{// 该对象观察这个Subject// 同时Subject也绑定这个对象会发送通知public Satoshi(SubjectPokedex pokedex) {this.subject pokedex;this.subject.employ(this);}Overridepublic void update() {System.out.println(I am Satoshi! I got the message:);this.subject.getDexState(Kanto);} }public class Shigeru extends ObserverTrainer{public Shigeru(SubjectPokedex subject) {this.subject subject;this.subject.employ(this);}Overridepublic void update() {System.out.println(I am Shigeru! I got the message:);this.subject.getDexState(Johto);} }最后是这次抓宝可梦任务的实现类 public class SubjectPokedex implements SubjectLab{private ListObserverTrainer trainers new ArrayList();private HashMapString, Integer pokedex new HashMap();private Integer num;/*** 初始化假设各个地区已经发现了很多宝可梦* 还有value个宝可梦没有被抓到研究所研究* num统计总数*/public SubjectPokedex() {pokedex.put(Kanto, 155);pokedex.put(Johto, 155);num 310;}/*** 打印某地区剩下的宝可梦* param region 地区*/public void getDexState(String region){System.out.println(There are still pokedex.getOrDefault(region, 0) Pokemons in region that havent been captured.);System.out.println(There are a total of num Pokemon that have not been captured yet.\n);}/*** 抓获了num个宝可梦*/public void catchPokemon(String region, Integer num){this.pokedex.put(region, pokedex.get(region) - num);this.num - num;notifyAllTrainers();}/*** 任命愿意来帮助捕捉宝可梦的训练家们* param trainer 训练家*/public void employ(ObserverTrainer trainer){trainers.add(trainer);}/*** 通知所有参与的训练家*/public void notifyAllTrainers(){for (ObserverTrainer trainer : trainers) {trainer.update();}} } 测试类 public class ObserverDemo {public static void main(String[] args) {// Subject对象SubjectPokedex subjectPokedex new SubjectPokedex();// 两个观察者接收Subject的通知new Satoshi(subjectPokedex);new Shigeru(subjectPokedex);// 通知关都地区抓住了30只subjectPokedex.catchPokemon(Kanto, 30);// 通知城都地区抓住了90只subjectPokedex.catchPokemon(Johto, 90);} }I am Satoshi! I got the message: There are still 125 Pokemons in Kanto that havent been captured. There are a total of 280 Pokemon that have not been captured yet.I am Shigeru! I got the message: There are still 155 Pokemons in Johto that havent been captured. There are a total of 280 Pokemon that have not been captured yet.I am Satoshi! I got the message: There are still 125 Pokemons in Kanto that havent been captured. There are a total of 190 Pokemon that have not been captured yet.I am Shigeru! I got the message: There are still 65 Pokemons in Johto that havent been captured. There are a total of 190 Pokemon that have not been captured yet.3.应用 笔者水平有限暂时不知道Java哪个常用API用到了观察者模式。 不过可以根据这个思想大概猜测一种注册端口再监听的做法和这个差不多。 如果你的微博关注了某人TA发微博时会推送给你关注这个行为就相当于是你开始观察这个人(Subject). 或者Steam心愿单添加了某款游戏这游戏降价时也会推送给你推送给每个观察者(添加愿望单的玩家). 4.和发布-订阅模式的讨论 有了解过消息队列的聪明的训练家就会感觉这和发布-订阅模式很像啊 在查阅资料的过程中发现有些博主会把发布-订阅模式与观察者模式划等号其实细品的话还是有一些区别。 我认为最大的区别在于发布-订阅模式的主要目的是将发布者与订阅者解耦发布者将消息发送给中间代理然后代理分发消息给订阅者让订阅者和发布者之间无需互相关注。 而观察者模式强调的是观察者和被观察者之间的联系被观察者(Subject)甚至会负责维护一个观察者的抽象类的列表他们之间的联系是紧密的。 第二个区别发布-订阅模式的消息传递是通过中间代理而观察者模式是观察者与被观察者之间直接通信。 所以发布-订阅模式是不能跟观察者模式划等号的观察者模式是一种更为简单的设计理念而发布-订阅模式适用于更复杂的业务场景。
http://www.dnsts.com.cn/news/151719.html

相关文章:

  • 做旅游网站的目的代客做网站
  • 企业电商网站建设张雪峰建议取消市场营销
  • 东莞优化公司收费百度搜索引擎优化的养成良好心态
  • 电子商务网站软件建设响应式培训网站模板
  • 界面简洁的网站潍坊地区网站制作
  • 南宁庆云网站建设会展公司排名
  • 湖北省建设工程教育协会网站韶关网站建设
  • 系部网站开发计划书内网网站搭建设
  • 建设一个交易网站要用多少钱营销型网站建设风格设定
  • 网站源码交易平台代码建行卡如何网上签约
  • 男女直接做那个视频网站建设网站机构
  • 西安模板建站公司怎么把网站挂在服务器
  • 移动网站开发公司网站怎么做构成
  • 企业建设网站注意点wordpress有什么用
  • cms建站系统介绍门户网站建设美丽
  • 3d渲染网站建设注册网站多久
  • 厚街做网站大濮网
  • 济南怎样做网站推广Wordpress排版混乱
  • 网站开发可以入无形资产吗随州什么公司做网站
  • 我的世界怎么做充值点卷网站厦门网站设计公司找哪家厦门小程序建设
  • 网站建站所用的技术韩文网站建设
  • 怎样申请注册公司网站淘宝api wordpress
  • 新乡做网站推广公司网站后台维护
  • 英文网站开发哪家好wordpress grace7 破解
  • 制作网站首页教案找人一起做素材网站
  • 专业做酒类营销的网站网络推广策划思路
  • 深圳网站建设效果汕头建站免费模板
  • 珠江新城网站建设北京高端品牌网站建设
  • 湖州住房和城乡建设厅网站有个网站做字的图片
  • 有经验的郑州网站建设石家庄做外贸网站建设