Sobes.tech
Junior — Middle

Μπορείς να δώσεις ένα παράδειγμα προτύπου συμπεριφορικού σχεδιασμού;

sobes.tech AI

Απάντηση από AI

Ένα παράδειγμα συμπεριφορικού μοτίβου σχεδίασης είναι το μοτίβο "Παρατηρητής". Χρησιμοποιείται όταν πρέπει να ειδοποιούνται πολλά αντικείμενα για αλλαγές στην κατάσταση ενός άλλου αντικειμένου.

Στο Android, αυτό το μοτίβο εφαρμόζεται συχνά κατά την εργασία με LiveData και ViewModel, όπου η προβολή εγγράφεται στις αλλαγές δεδομένων και ενημερώνεται αυτόματα.

Παράδειγμα σε Kotlin:

class Subject {
    private val observers = mutableListOf<Observer>()
    var state: Int = 0
        set(value) {
            field = value
            notifyObservers()
        }

    fun attach(observer: Observer) {
        observers.add(observer)
    }

    private fun notifyObservers() {
        observers.forEach { it.update(state) }
    }
}

interface Observer {
    fun update(state: Int)
}

class ConcreteObserver : Observer {
    override fun update(state: Int) {
        println("Ενημερώθηκε η κατάσταση σε: $state")
    }
}

fun main() {
    val subject = Subject()
    val observer = ConcreteObserver()
    subject.attach(observer)
    subject.state = 10
}