Esempio n. 1
0
class RubberDuck(Quackable):
    """
    Rubber Duck model
    """

    def __init__(self):
        self._observable = Observable(self)

    def register_observer(self, observer) -> None:
        self._observable.register_observer(observer)

    def notify_observers(self) -> None:
        self._observable.notify_observers()

    def quack(self) -> None:
        print('Squeak')
        self.notify_observers()

    def __str__(self) -> str:
        return 'Rubber Duck'
Esempio n. 2
0
class DuckCall(Quackable):
    """
    Duck call model
    """

    def __init__(self):
        self._observable = Observable(self)

    def register_observer(self, observer) -> None:
        self._observable.register_observer(observer)

    def notify_observers(self) -> None:
        self._observable.notify_observers()

    def quack(self) -> None:
        print('Kwak')
        self.notify_observers()

    def __str__(self) -> str:
        return 'Duck call'
Esempio n. 3
0
class GooseAdapter(Quackable):
    """
    Goose adapter
    """
    def __init__(self, goose: Goose):
        self._goose = goose
        self._observable = Observable(self)

    def quack(self) -> None:
        self._goose.honk()
        self.notify_observers()

    def register_observer(self, observer) -> None:
        self._observable.register_observer(observer)

    def notify_observers(self) -> None:
        self._observable.notify_observers()

    def __str__(self) -> str:
        return 'Goose pretending to be a Duck'
Esempio n. 4
0
 def __init__(self):
     self._observable = Observable(self)
Esempio n. 5
0
 def __init__(self, goose: Goose):
     self._goose = goose
     self._observable = Observable(self)