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

微网站开发方案模板做旅游网站都需要的调查

微网站开发方案模板,做旅游网站都需要的调查,Wordpress收费下载会员,钟表珠宝商城网站建设文章目录 概念结构实例总结 概念 观察者模式#xff1a;定义对象之间的一种一对多的依赖关系#xff0c;使得每当一个对象状态发生改变时#xff0c;其他相关依赖对象都得到通知并被自动更新。 观察者模式是使用频率较高的一个模式#xff0c;它建立了对象与对象之间的依赖… 文章目录 概念结构实例总结 概念 观察者模式定义对象之间的一种一对多的依赖关系使得每当一个对象状态发生改变时其他相关依赖对象都得到通知并被自动更新。 观察者模式是使用频率较高的一个模式它建立了对象与对象之间的依赖关系当一个对象发生了改变自动会通知其他对象。发生改变的对象被称为观察目标被通知的对象被称为观察者。 当我们看到绿灯就会通过看到红灯就会停止行走红灯就是观察目标我们就是观察者红灯只有一个而我们是一群人也就是说一个目标可以对应多个观察者。 结构 观察者模式的类图如下 Subject(目标)目标也称为主题也就是被观察的对象。我们可以在目标中定义一个观察者集合它提供方法来增加或者删除观察者对象同时它最主要的方法是通知方法notify可以通知观察者。 ConcreteSubject(具体目标)它是目标的子类当它的状态发生改变时主要是用来向各个观察者发送通知。 Observer(观察者)观察者将对观察目标的改变做出反应观察者一般定义为接口。 ConcreteObserver(具体观察者)它是观察者的子类在具体观察者中维护了一个指向具体目标的引用。 实例 在某多人联机对战游戏中多个玩家可以加入同一战队组成联盟当战队中的一人遭到敌人攻击时将给所有的其他盟友发送通知盟友收到通知后将做出反应。 如果不用设计模式正常的链路是这样的联盟成员遭到攻击----通知给盟友----盟友做出反应这样的弊端是如果盟友有很多则每一个成员都需要进行关联耦合性太严重。加入观察模式的话以指挥部作为一个新的对象链路变成这样联盟成员遭到攻击----通知指挥部----指挥部通知所有盟友----盟友做出反应。 AllyControlCenter,指挥部中心充当抽象目标类 Data public abstract class AllyControlCenter {protected String allyName;protected ArrayListObserver players new ArrayList();public void join (Observer obs){System.out.println(obs.getName() 加入 this.allyName 战队);players.add(obs);}public void quit(Observer obs){System.out.println(obs.getName() 退出 this.allyName 战队);players.remove(obs);}public abstract void notifyObserver(String name); }ConcreteAllyControlCenter类充当具体目标类 Data public class ConcreteAllyControlCenter extends AllyControlCenter {public ConcreteAllyControlCenter(String allyName) {System.out.println(allyName 战队组建成功);this.allyName allyName;}Overridepublic void notifyObserver(String name) {System.out.println(this.allyName 战队紧急通知盟友 name 遭到敌人攻击);for (Observer player : players) {if (!name.equals(player.getName())) {player.help();}}} }Observer抽象观察者 public interface Observer {String getName();void setName(String name);void help();void beAttacked(AllyControlCenter acc);}Player,具体观察者 public class Player implements Observer {private String name;public Player(String name) {this.name name;}Overridepublic String getName() {return name;}Overridepublic void setName(String name) {this.name name;}Overridepublic void help() {System.out.println(坚持住 this.name 来救你);}Overridepublic void beAttacked(AllyControlCenter acc) {System.out.println(this.name 被攻击);acc.notifyObserver(name);} }客户端 public class Client {public static void main(String[] args) {AllyControlCenter allyControlCenter;allyControlCenter new ConcreteAllyControlCenter(联盟);Observer play1, play2, play3;play1 new Player(play1);allyControlCenter.join(play1);play2 new Player(play2);allyControlCenter.join(play2);play3 new Player(play3);allyControlCenter.join(play3);play1.beAttacked(allyControlCenter);}}打印结果 具体调用流程Player.beAttacked()— AllyControlCenter.notifyObserver()—Player.help() 另外,jdk 的util 包中自带观察者模式我们可以直接继承和实现这两个类使用起来更加方便。 总结 观察者模式的优点 1、表示层和数据逻辑层分离并抽象了更新的接口便于不同的表示层充当观察者角色。 2、在观察目标和观察者之间建立了一个抽象的耦合。观察者目标只需要维护一个抽象的观察者集合即可无需了解具体观察者。 3、简化了一对多系统的难度支持广播通信。 4、符合开闭原则增加新的观察者无需修改原代码。 观察者模式的缺点 1、观察者太多的话有性能问题。 2、如果观察者和观察目标之间存在循环依赖可能导致系统崩溃。 3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的仅仅是知道目标发生了变化。 适用环境 1、当一个抽象模型的一方面依赖另一方面时可以考虑观察者模式。 2、一个对象的改变导致多个对象发生变动时。 3、需要在系统中新建一个触发链A对象变动影响B对象B对象变动影响C对象。
http://www.dnsts.com.cn/news/63055.html

相关文章:

  • 建设一个网站的过程网站全栰培训
  • 学院网站建设新闻简报专业搜索引擎seo合作
  • 番禺南村网站建设网上做娱乐广告的网站
  • 关于加强网站建设asp企业网站源码下载
  • 网站后台不更新wordpress 主题 简介
  • 银川网站怎么做seo素材网站推荐
  • 免费销售网站模板下载南京那些公司做网站
  • 公众号同步到dede网站wp qiniu wordpress
  • 购物网站开发设计深圳网站建设方维
  • 现在做个企业网站一般多少钱wordpress daxue
  • 网站框架文案宁波seo基础入门
  • 网站 图标 素材微信投票网站开发
  • 在建设部网站首页h5页面制作软件电脑版
  • win7网站服务器制作软件微信创建小程序
  • 建英文网站有用吗临沂手机网站制作
  • 怎么创建一个博客网站吗免费平台发布销售信息
  • 旅游投资公司网站建设ppt模板制作网页的基本技术标准
  • 凡科 做网站如何做网站排名
  • ps做网站像素大小凡科手机网站建设开发
  • 西安网站建设产品品质网站建设
  • 北京网站推广排名公司自己做的表白网站
  • 网站建设中请稍后再访问在线网页代理免费版
  • 外贸网站建设制作教程全网关键词搜索工具
  • 做网站哪个系统最安全一键优化助手
  • 网站建设 个人服务器如何申请小程序
  • 做网站的外包公司手机欧美视频网站模板下载 迅雷下载 迅雷下载地址
  • 企业网站托管方案内容具体有哪些网站开发设计有限公司
  • 济南做设计公司网站网站正在建设中的网页怎么做
  • 网站定制套餐wordpress主题修改头部
  • 做外汇网站代理公司管理系统网站