(S) Single Responsibility Principle

Single Responsibility Principle

  • Zgodnie z założeniami wzorcu projektowania „Single Responsibility Principle”, każda klasa powinna posiadać własny zakres obowiązków którymi będzie się zajmować. Nie powinna przejmować przy tym zadań innych klas, tak aby nie powstała jedna klasa obsługująca wszystko.
  • Zgodnie z poniższym przykładem, klasa „Device” definiuje urządzenia, umożliwiając dodawanie oraz usuwanie grup ze wskazanego urządzenia. Natomiast funkcję zapisu danych do pliku przejmuje inna dedykowana do tego zadania klasa „PersistenceManager”.
class Device:
    
    def __init__(self, name):
        self.name = name
        self.group = []
        self.reference = 0

    def add_device_to_group(self, text):
        self.group.append(f"{self.reference}: {text}")
        self.reference += 1

    def remove_device_from_group(self, pos):
        del self.group[pos]

    def __str__(self):
        return "\n".join(self.group)


class PersistenceManager:
    def save_to_file(self, object, filename):
        file = open(filename, "w")
        file.write(str(object))
        file.close()


device = Device("RKKR-LAB-SW-1")
device.add_device_to_group("Lodz")
device.add_device_to_group("Switches")
print(device)

file = "device.txt"
persistence = PersistenceManager()
persistence.save_to_file(device, file)

with open(file) as fh:
    print(fh.read())
PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

1 Response

  1. 5 maja 2021

    […] Single Responsibility Principle […]

Dodaj komentarz