美文网首页
设计模式与软件原则 (五):观察者「Observor」模式

设计模式与软件原则 (五):观察者「Observor」模式

作者: _浅墨_ | 来源:发表于2022-03-05 14:15 被阅读0次
Observor Design Pattern

观察者设计模式用于通知其他实体其状态的变化。

下面看一个简单的示例:

protocol ScoreObservor {
    
    func scoreUpdate()
    
}


enum Team: String {
    
    case barcelona, juventus
    
}

class Player {
    
    var name: String
    
    let team: Team
    
    var goalCount = 0
    
    var scoreObservor: ScoreObservor?
    
    init(name: String, team: Team) {
        
        self.name = name
        
        self.team = team
        
    }
    
    func didScore() {
        
        goalCount += 1
        
        if let scoreObservor = scoreObservor {
        
            scoreObservor.scoreUpdate()
            
        }
        
    }
    
}

class Game: ScoreObservor {
    
    var players = [Player]()
    
    init(players: [Player]) {
        
        print("game started")
        
        self.players = players
        
    }
    
    func scoreUpdate() {
        
        var barcelonaScore = 0
        
        var juventusScore = 0
        
        for player in players {
            
            switch player.team {
                
            case .barcelona:
                
                barcelonaScore += player.goalCount
                
            case .juventus:
                
                juventusScore += player.goalCount
                
            }
            
        }
        
        print("Barcelona \(barcelonaScore) - Juventus \(juventusScore)")
        
    }
    
}

let messi = Player(name: "Messi", team: .barcelona)

let ronaldo = Player(name: "Ronaldo", team: .juventus)

let game = Game(players: [messi, ronaldo])

messi.scoreObservor = game

ronaldo.scoreObservor = game

messi.didScore()

ronaldo.didScore()

messi.didScore()

ronaldo.didScore()

messi.didScore()

ronaldo.didScore()

相关文章

  • 设计模式与软件原则 (五):观察者「Observor」模式

    Observor Design Pattern 观察者设计模式用于通知其他实体其状态的变化。 下面看一个简单的示例:

  • 大话设计模式 读书笔记

    大话设计模式 book: <设计模式> <设计模式解析> <敏捷软件开发:原则, 模式与实践> <重构-改善既有代...

  • 架构师学习路线图

    内功心法 设计模式 软件设计原则 软件设计模式创建型模式Factory 工厂模式Singleton 单例模式Pro...

  • 一篇文章搞懂设计模式

    目录 面向对象的七种设计原则建造者模式命令模式享元模式模板方法模式责任链模式建造者模式原型模式观察者模式策略模式与...

  • 别再面向 for 循环编程了,Spring 自带的观察者模式就很

    1. 概述 在设计模式中,观察者模式是一个比较常用的设计模式。维基百科解释如下: 观察者模式是软件设计模式的一种。...

  • Android中的设计模式之观察者模式

    参考 《设计模式:可复用面向对象软件的基础 》5.7 Observer 观察者 对象行为型模式 《设计模式解析》 ...

  • C++笔记十一(C++设计模式)

    本周内容(1)设计模式简介(2)面向对象设计原则(3)模板方法(4)策略模式(5)观察者模式(6)装饰模式(7)桥...

  • 设计模式

    1 软件设计原则和设计模式概览 1.1 面向对象设计原则 1.2 GOF设计模式 1.3 C嵌入式编程设计模式 ...

  • 设计模式

    软件开发中常用设计模式和设计原则有哪些? ##设计模式: * 1、简单工厂模式(Factory) * 2、策略模式...

  • 观察者设计模式

    每周学点Java设计模式__观察者设计模式 本次继续更新java23中设计模式之一——观察者模式。 观察者模式(有...

网友评论

      本文标题:设计模式与软件原则 (五):观察者「Observor」模式

      本文链接:https://www.haomeiwen.com/subject/mriprrtx.html