01. SRP (Single Responsibility Principle)

관심사의 분리 SOC (separation of concerns) 랑 뭔가 비슷한 느낌.

  • 클래스가 있는 경우, 클래스는 무엇을 하려는지 간에 주된 책임이 있어야 한다.
  • Journal 클래스에 저장기능까지 추가하면 책임이 너무 많아지므로, PersistenceManager 와 같은 클래스로 파일 입출력에 대한 기능을 따로 나누는것이 좋다.
class Journal:

  def __init__(self):
    self.entries = []
    self.count = 0

  def add_entry(self, text):
    self.count += 1
    self.entries.append(f"{self.count}: {text}")

  def remove_entry(self, pos):
    del self.entries[pos]
  
  def __str__(self):
    return "\n".join(self.entries)

  # def save(self, filename):
  #   file = open(filename, "w")
  #   file.write(str(self))
  #   file.close()
  
  # def load(self, filename):
  #   ...
  
  # def low_from_web(self, url):
  #   ...


class PersistenceManager:
  
  @staticmethod
  def save_to_file(journal, filename):
    file = open(filename, "w")
    file.write(str(journal))
    file.close()

j = Journal()
j.add_entry("I cried today.")
j.add_entry("I ate a bug.")
print(f"Journal entries:\n{j}")

file = r'c:\temp\journal.txt'
PersistenceManger.save_to_file(j, file)

댓글남기기