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

怎么做网站跟域名企业组网设计

怎么做网站跟域名,企业组网设计,在哪能学到网站建设,网站怎样秒收录● 观察者模式介绍 观察者模式是一个使用频率非常高的模式,它最常用的地方是GUI系统、订阅——发布系统。因为这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得它们之间依赖性更小,甚至做到毫无依赖。以CUI系统来说&a…

● 观察者模式介绍

        观察者模式是一个使用频率非常高的模式,它最常用的地方是GUI系统、订阅——发布系统。因为这个模式的一个重要作用就是解耦,将被观察者和观察者解耦,使得它们之间依赖性更小,甚至做到毫无依赖。以CUI系统来说,应用的UI具有易变性,尤其是前期随着业务的改变或者产品的需要修改,应用界面也会经常性变化,但是业务逻辑基本变化不大,此时,GUI系统需要一套机制来应对这种情况,使得UI层与具体的业务逻辑解耦,观察者模式此时就派上用场了。

● 观察者模式的定义

        定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并被自动更新。

● 观察者模式的使用场景

        关联行为场景,需要注意的是,关联行为是可拆分的,而不是“组合”关系;

        事件对接触发场景;

        跨系统的消息交换场景,如消息队列、事件总线的处理机制。

● 观察者模式的UML类图

        UML类图下图所示。

        

        角色介绍。

        Subject:抽象主题,也就是被观察者(Observable)的角色,抽象主题角色把所有观察者对象的引用在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。

        ConcreteSubject:具体主题,该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发出通知,具体主题角色又叫做具体被观察者(Concrete Observable)角色。

        Observer:抽象观察者,该角色是观察者的抽象类,它定义了一个更新接口,使得在得到主题的更改通知时更新自己。

        ConcreteObserver:具体的观察者,该角色实现抽象观察者角色所定义的更新接口,以便在主题的状态发生变化时更新自身状态。

● 观察者模式的简单实现

        假设有一个开发技术前线网站,是一个聚合了关于Android、iOS新技术文章的开源库等内容的网站,在这里可以看到新技术、强大的开源库、新的信息,经常浏览这两网站不仅能够开阔眼界,也能让我们接触到前沿的科技信息。

        开发技术前线不仅是个内容发布页面,也支持用户邮箱订阅,每周发布周报后会将优质的内容推送给订阅用户,这种模式叫做发布——订阅模式,它的另一个名称是观察者模式。

        下面让我们来简单模拟一下开发技术前线的发布——订阅过程。

/*** 程序是观察者*/
public class Coder implements Observer {public String name;public Coder(String name) {this.name = name;}@Overridepublic void update(Observable o, Object arg) {System.out.println("Hi, " + name + ", DevTechFrontier更新新, 内容:" + arg);}@NonNull@Overridepublic String toString() {return "码农:" + name;}
}
/*** DevTechFrontier 即开发技术前线,这个网站是被观察者角色,当它有更新时所有的观察者(这里是程序员)* 都接到相应的通知*/
public class DevTechFrontier extends Observable {public void postNewPublication(String content) {//标识状态或者内容发生改变setChanged();//通知所有观察者notifyObservers(content);}
}
/*** 测试代码*/
public class Test {public static void main(String[] args) {//被观察的角色DevTechFrontier devTechFrontier = new DevTechFrontier();Coder mrsimple = new Coder("mr.simple");Coder coder1 = new Coder("coder-1");Coder coder2 = new Coder("coder-2");Coder coder3 = new Coder("coder-3");//将观察者注册到可观察对象的观察者列表中devTechFrontier.addObserver(mrsimple);devTechFrontier.addObserver(coder1);devTechFrontier.addObserver(coder2);devTechFrontier.addObserver(coder3);//发布消息devTechFrontier.postNewPublication("新的一期开发技术前线周报发布啦!");}
}

        输出结果:

        可以看到所有订阅了开发技术前线的用户都收到了更新消息,一对多的订阅——发布系统就完成了。

        Oblerver和Observable是JDK中内置类型,可见观察者模式是非常重要的,这里Obsserver是抽象的观察者角色,Coder扮演的是具体观察者的角色:Observable对应的是抽象主题角色,DevTechFrontier则是具体的主题角色。Coder是具体的观察者,它们订阅了DevTechFrontier这个具体的可观察对象,当DevTechFrontier有更新时,会遍历所有观察者(这里是Coder),然后给这些观察者发布一个更新的消息,即调用Observer和Observable这些抽象类,因此,Coder和DevTechFrontier完全没有耦合,保证了订阅系统的灵活性、可扩展性。

http://www.yayakq.cn/news/44782/

相关文章:

  • 网站建设要会什么软件武义县住房和城乡建设局网站
  • 自媒体运营小程序开发网站建设国内外优秀网站
  • 南充建设机械网站天河做网站公司
  • 嘉兴建站模板做搜索引擎优化对网站有哪些好处
  • seo网站优化工具大全网店代理免费一件代发
  • 高职高专图书馆网站建设如何搭建外贸网站
  • 个人可以做社区网站有哪些otc场外交易网站开发
  • 彩票网站建设哪家公司好怎么设计一个网站
  • 东莞网络销售的网站建设建站素材网站模板
  • 做网站是不是很简单装饰工程规范
  • 网站管理建设工作报告外贸网站 设计
  • 锐速做网站免费 个人网站
  • 有哪些学校的网站做的好处wordpress 配置文件
  • 网站设计怎么算间距我要自学网网站建设与管理
  • 做的好看的统一登录网站网站建设到运营需要多少钱
  • 电商网站开发怎么样深圳燃气公司官网
  • 广州网站建设网络科技有限公司济南营销网站制作
  • 什么是网站快照企业官网搭建
  • 长春哪有做网站公司诺基亚官方网站
  • 建设项目环境影响登记网站天津网站收录慢
  • 威龙电子商务做的网站安徽省外经建设集团有限公司网站
  • 做网站要学的代码建设银行官方网首页
  • 做网站的员工怎么设置绩效考核网站建设找伟杨科技
  • 南阳seo网站推广费用科技网站 石家庄
  • 锦州网站建设怎样建设工程案例网站
  • 泰州模板建站源码在家做的手工活哪里有网站
  • 网站建设的基本流程包括什么网站教程
  • 网站建设 昆明 价格二级域名建站
  • 福州公司建站企业网站禁忌
  • 电商网站如何设计内容wordpress全站广告位