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

淘宝发布网站建设黑帽seo技术论坛

淘宝发布网站建设,黑帽seo技术论坛,张家港网站网络公司,wordpress分类目录绑定二级域名文章目录 1. 概念1.1 角色1.2 类图 2. 代码示例2.1 代码2.2 类图 1. 概念 观察者(Observer)指当目标对象状态发生变化后,对状态变化事件进行响应或处理的对象。 1.1 角色 Subject(抽象主题): 它可以有多…

文章目录

  • 1. 概念
    • 1.1 角色
    • 1.2 类图
  • 2. 代码示例
    • 2.1 代码
    • 2.2 类图

1. 概念

观察者(Observer)指当目标对象状态发生变化后,对状态变化事件进行响应或处理的对象。

1.1 角色

  • Subject(抽象主题):
    • 它可以有多个观察者,并将所有观察者对象的引用保存在一个集合里
    • 被观察者提供一个接口,可以增加和删除观察者角色
  • ConcreteSubject(具体主题):
    • 将有关状态存入具体观察者对象
    • 在主题发生改变时,给所有的观察者发出通知
  • Observer(抽象观察者):
    • 为所有的具体观察者定义一个更新接口,在收到主题的通知时能够及时的更新自己
  • ConcreteObserver(具体观察者):
    • 实现抽象观察者角色定义的更新接口,以便使本身的状态与主题状态相协调。如果需要,具体观察者角色可以保存一个指向具体主题角色的引用。

1.2 类图

Subject
-observer:List
+Add(o:Observer)
+NotifyObserver()
+ChangeState()
ConcreteSubject
+ChangeState()
«interface»
Observer
+Update(s:State)
ConcreteObserverA
+Update(s:State)
ConcreteObserverB
+Update(s:State)

2. 代码示例

2.1 代码

  • 代码
package mainimport "fmt"//定义抽象主题,它是观察者的聚合
type Subject struct{  observers []Observer
}//定义一个方法,为抽象主题添加观察者
func (c *Subject) Attach(o ...Observer) {c.observers = append(c.observers, o...)
}//定义实际主题,继承抽象主题,它是实际的被观察者。
type ConcreteSubject struct {Subject    Subjectcontext   string}//依次通知观察者
func (c *ConcreteSubject) notify() {for _, o := range c.Subject.observers {o.Update(c)}}//具体抽象主题的,同时发送通知给观察者
func (c *ConcreteSubject) UpdateContext(context string) {c.context = contextc.notify()
}//定义抽象观察者
type Observer interface {Update(*ConcreteSubject)
}//定义具体观察者
type ConcreteObserverA struct {name string
}//更新观察者
func (r *ConcreteObserverA) Update(c *ConcreteSubject) {fmt.Printf("%s receive %q\n", r.name, c.context)
} //定义具体观察者
type ConcreteObserverB struct {name string
}//更新观察者
func (r *ConcreteObserverB) Update(c *ConcreteSubject) {fmt.Printf("%s receive %q\n", r.name, c.context)
} //定义具体观察者
type ConcreteObserverC struct {name string
}//更新观察者
func (r *ConcreteObserverC) Update(c *ConcreteSubject) {fmt.Printf("%s receive %q\n", r.name, c.context)
} func main() {//实例化抽象主题subject := Subject{observers: make([]Observer, 0),}//实例化3观察者concreteObserverA := &ConcreteObserverA{name: "concreteObserverA",}concreteObserverB := &ConcreteObserverB{name: "concreteObserverB",}concreteObserverC := &ConcreteObserverC{name: "concreteObserverC",}//将3个观察者加入抽象主题subject.Attach(concreteObserverA,concreteObserverB,concreteObserverC)//实例化具体主题concreteSubject := &ConcreteSubject{Subject: subject,}//更新具体主题,它将通知所有观察者concreteSubject.UpdateContext("updata context")
}
  • 输出
concreteObserverA receive "updata context"
concreteObserverB receive "updata context"
concreteObserverC receive "updata context"

2.2 类图

Subject
+[]Observe observers
+Attach(o ...Observer)
ConcreteSubject
+Subject:Subject
+context:String
+Notify()
+UpdateContext(context string)
«interface»
Observer
+Update(c *ConcreteSubject)
ConcreteObserverA
+Name:String
+Update(c *ConcreteSubject)
ConcreteObserverB
+Name:String
+Update(c *ConcreteSubject)
ConcreteObserverC
+Name:String
+Update(c *ConcreteSubject)
http://www.hkea.cn/news/2956/

相关文章:

  • phpcms移动端网站怎么做蔡甸seo排名公司
  • 广州网站制作设计公司2023适合小学生的新闻事件
  • 彩票网站怎么做ip管理免费网站模板
  • 网站开发毕业论文国际域名注册网站
  • 网站 可信验证企业培训课程安排表
  • 设计海报的软件搜索引擎营销简称seo
  • 门户网站建设进一步提升百度广告服务商
  • 2016手机网站制作规范网站怎么添加外链
  • 咨询公司经营范围大全网站关键词seo费用
  • 易县做网站太原seo关键词排名优化
  • 人力网站建设的建议搜索引擎营销的主要方法包括
  • 大良营销网站建设如何郑州网络营销公司
  • 门头广告设计图片seo及网络推广招聘
  • 织梦网站上线seo零基础教学视频
  • node做网站优势域名停靠浏览器
  • 市网站制作网站seo什么意思
  • 动态网站建设编程自考百度客服电话人工服务热线电话
  • 服装代销的网站源码厦门人才网唯一官网登录
  • php网站建设的公司电商如何推广自己的产品
  • 做测试的网站百度服务平台
  • 不锈钢餐具做外贸哪个网站好网页设计代码
  • 枣庄网站建设推广工具有哪些
  • 国外做电商网站有哪些方面河南网站建设公司哪家好
  • 做网站 360的好不好旺道网站排名优化
  • 做外贸网站需要注意什么郑州今天刚刚发生的新闻
  • wordpress域名网站搬家怎么推广公众号让人关注
  • python网站开发实践长沙百度首页排名
  • 微信小程序可以做电影网站吗优化大师使用方法
  • 三门峡建设网站哪家好网站免费软件
  • 网站建设费 科目长春做网站公司长春seo公司