做网站ps文字有锯齿我是做废品回收,最近有个变宝网主动联系我说是再生资源网站的,可信吗?
做网站ps文字有锯齿,我是做废品回收,最近有个变宝网主动联系我说是再生资源网站的,可信吗?,0000网站建设,狠狠做狠狠干免费网站目录 一#xff0c;看图初步理解
二#xff0c;题目
题目分析#xff1a;
三#xff0c;总结 一#xff0c;看图初步理解 如果是刚开始接触到设计模式的朋友#xff0c;可能会疑惑
观察者是个什么意思(・∀・(・∀・(・∀・*)#xff0c;要观察什么
举个例子#…目录一看图初步理解二题目题目分析三总结一看图初步理解如果是刚开始接触到设计模式的朋友可能会疑惑观察者是个什么意思(・∀・(・∀・(・∀・*)要观察什么举个例子有一本非常著名的杂志有很多忠实的读者都等着它的更新这里的读者我们就说他们是观察者ConcreteObserver杂志的更新对读者们来说尤其重要需要有人能够及时通知他们杂志的情况所以我们需要一个工具能够协助杂志社进行通知读者的工作这里我们就引入了具体目标ConcreteSubject它的作用如下1.统计读者数量与信息便于后续通知到他们2.更新后通知读者为了方便管理这里还引入了Observer接口方便实现对所有读者的统一管理Subject抽象类实现对通知行为的统一管理通过这种方式就实现了针对观察者通知的完整流程接下来通过一个题目加深大家的理解二题目如下代码 Subject 和 Observer 分别是观察者设计模式中的主题接口和观察者接口GameScore实现主题接口记录篮球比赛的比分其中gameTime数据域表示比赛进行的时间homeScore数据域表示主队得分visitorScore数据域表示客队得分。ScoreDB是其中一个观察者将得分情况记录进入数据库VoiceScore是其中一个观察者语音播报得分DisplayScore 是其中一个观察者大屏显示得分请将 GameScore 类补充完整并提交只需提交GameScore 类import java.util.*; interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); public void notifyObserver(); } interface Observer { public void update(String gameTime,int homeScore,int visitorScore); }/**补充完整GameScore 类并提交**/class ScoreDB implements Observer{ Override public void update(String gameTime, int homeScore, int visitorScore) { System.out.println(String.format(%s:%d-%dwriteToDB,gameTime,homeScore,visitorScore)); } } class VoiceScore implements Observer{ Override public void update(String gameTime, int homeScore, int visitorScore) { System.out.println(String.format(%s:%d-%dvoice,gameTime,homeScore,visitorScore)); } } class DisplayScore implements Observer{ Override public void update(String gameTime, int homeScore, int visitorScore) { System.out.println(String.format(%s:%d-%dscreenDisplay,gameTime,homeScore,visitorScore)); } } public class Main { public static void main(String[] args){ GameScore gameScorenew GameScore(); ScoreDB scoreDBnew ScoreDB(); VoiceScore voiceScorenew VoiceScore(); DisplayScore displayScorenew DisplayScore(); gameScore.registerObserver(scoreDB); gameScore.registerObserver(voiceScore); gameScore.registerObserver(displayScore); gameScore.setScore(Game10minute,1,0); gameScore.removeObserver(voiceScore); gameScore.setScore(Game19minute,1,1); } }输出描述Game10minute:1-0writeToDBGame10minute:1-0voiceGame10minute:1-0screenDisplayGame19minute:1-1writeToDBGame19minute:1-1screenDisplay题目分析根据题目已经给出的代码以及题目要求我们来理一下该题目的逻辑观察者ConcreteObserver是谁ScoreDB是其中一个观察者将得分情况记录进入数据库VoiceScore是其中一个观察者语音播报得分DisplayScore 是其中一个观察者大屏显示得分题目已经明确告诉我们现在让我们分析一下观察者的代码class ScoreDB implements Observer{ Override public void update(String gameTime, int homeScore, int visitorScore) { System.out.println(String.format(%s:%d-%dwriteToDB,gameTime,homeScore,visitorScore)); } }只有一个函数等待具体目标ConcreteSubject将更新后的内容传输给他得到结果那谁又是具体目标ConcreteSubject呢我们发现题目中已经给出的类分别对应观察者ConcreteObserver/Observer接口/Subject接口因此需要我们补充的GameScore 类显而易见就是我们需要的具体目标ConcreteSubject画出类图因此GameScore 类需要实现2部分工作1.增加观察者2.通知观察者使之更新再结合题目已经给出的Subject接口我们实现代码如下class GameScore implements Subject{ private ListObserver Observers new ArrayList(); private String gameTime;//比赛进行时间 private int homeScore;//主队得分 private int visitorScore;//客队得分 public void setScore(String gameTime,int homeScore,int visitorScore){ this.gameTimegameTime; this.homeScorehomeScore; this.visitorScorevisitorScore; notifyObserver(); } public void registerObserver(Observer o){//增加观察者 Observers.add(o); } public void removeObserver(Observer o){//移除观察者 Observers.remove(o); } public void notifyObserver(){//挨个通知观察者 for(Observer o:Observers){ o.update(this.gameTime, this.homeScore, this.visitorScore); } } }三总结观察者模式是一种行为型设计模式它定义了一种一对多的依赖关系当一个对象的状态发生改变时其所有依赖者都会收到通知并自动更新。当对象间存在一对多关系时则使用观察者模式Observer Pattern。比如当一个对象被修改时则会自动通知依赖它的对象。观察者模式属于行为型模式。设计模式系列持续更新欢迎关注博主~希望对大家有用祝您开心~(o゜▽゜)o☆有问题欢迎交流俺会改的✊