algorytm.org

Implementacja w Python



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Dekorator (decorator) - Implementacja w Python
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Dariusz Rorat, 01 czerwca 2013 12:50
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

decorator.py:
#!/usr/bin/env python

# wzorzec projektowy dekorator
# implementacja w Python 2.6
# Autor: Dariusz Rorat
# www.algorytm.org

#-------------------------------------------------------------------------------

class AbstractCar(object):
    def __init__(self):
        self.name  = ""
        self.price = 0.00
        pass

    def GetName(self):
        return self.name
    
    def GetPrice(self):
        return self.price
			
#-------------------------------------------------------------------------------

class AbstractDecorator(AbstractCar):
    def __init__(self):
        pass

#-------------------------------------------------------------------------------

class Decorator(AbstractDecorator):
    def __init__(self, parent):
        self.car         = parent
        self.accessories = ""
        self.surcharge   = 0.00
	
    def GetName(self):
        return self.car.GetName() + " + " + self.accessories

    def GetPrice(self):
        return self.car.GetPrice() + self.surcharge

#-------------------------------------------------------------------------------

class Car(AbstractCar):
    def __init__(self):
	pass

#-------------------------------------------------------------------------------

#                           testowy runner

class ConsoleApplication(object):

    def Run(self):

        #==================== bez dekoracji ====================================

        #wstawianie danych, mozna wstawiac dowolne nazwy i ceny
        car = Car()
        car.name  = "Audi 80"
        car.price = 20000.00

        #wyswietlenie danych
        print "Samochod bez dodatkow"
        print ""
        print "    Nazwa: %s"    % (car.GetName())
        print "    Cena:  %1.2f" % (car.GetPrice())
        print ""

        #===================== dekoracja samochodu =============================

        #mozna wztawiac dowolne akcesoria i doplaty do ceny
        car = Decorator(car)
        car.accessories = "klimatyzacja"
        car.surcharge   = 5000.00

        #wyswietlenie danych
        print "Samochod z klimatyzacja"
        print ""
        print "    Nazwa: %s"    % (car.GetName())
        print "    Cena:  %1.2f" % (car.GetPrice())
        print ""

        #================== dalsza dekoracja samochodu =========================

        #mozna wztawiac dowolne akcesoria i doplaty do ceny
        car = Decorator(car)
        car.accessories = "alufelgi"
        car.surcharge   = 100.00

        #wyswietlenie danych
        print "Samochod z klimatyzacja i alufelgami"
        print ""
        print "    Nazwa: %s"    % (car.GetName())
        print "    Cena:  %1.2f" % (car.GetPrice())
        print ""

#-------------------------------------------------------------------------------

def main():
    Application = ConsoleApplication()
    Application.Run()

#-------------------------------------------------------------------------------

if __name__ == "__main__":
    main()

Dodaj komentarz