Рубрики
Без рубрики

Вернуться к основам: Сплошные принципы (открытые закрытые)

Твердое – это аббревиатура для пяти объектно-ориентированных дизайна (OOD) принципов Роберта С. Мартина в его … Теги с Python, программированием, начинающим.

Твердое – это аббревиатура для пяти объектно-ориентированных конструкций (OOD) принципов Роберта С. Мартина в его книге Принципы проектирования и узоры дизайна Отказ

Принятие твердого программирования принципов также может способствовать избеганию запахов кода, рефакторирования и развития Agile или Adaptive Software.

В этом посте мы узнаем о втором принципе твердого программирования.

Открытый закрытый принцип

Объекты или объекты (классы, модули, функции) должны быть открыты для расширения, а не для модификации.

Давайте возьмем пример, чтобы понять, что это означает:

class Animal:
    def __init__(self, name):
        self.name = name

    def get_name(self):
        pass

def animal_sounds(animals):
    for animal in animals:
        if animal.name == "lion":
            print("roar")
        elif animal.name == "mouse":
            print("squeak")

animals = [
    Animal("lion"),
    Animal("mouse")
]

animal_sounds(animals)

Приведенный выше код нарушает открытый закрытый принцип, так как при добавлении новых животных в Животные Массив Нам нужно изменить функцию animal_sound (). Для каждого нового животного новая логика должна быть добавлена, и одинаковое изменение будет выполнено в нескольких местах, если наша приложение становится более сложной, как и в случае с фактическими проектами.

Решение?

Интерфейсы

Что такое интерфейс?

Интерфейс – это описание действий, которые может сделать объект. Например, когда вы переворачиваете выключатель света, свет продолжается, вам все равно, как только это делает.

При ориентированном объектному программированию, интерфейс является описанием всех функций, которые объект должен иметь для того, чтобы быть «X». Опять же, как пример, все, что «действует как« Like », должен иметь метод durn_On () и метод durn_off (). Цель интерфейсов состоит в том, чтобы позволить компьютеру обеспечить применение этих свойств и знать, что объект типа X должен иметь функции, называемые A, B и C.

На высоком уровне он действует как плакат для проектирования классов.

Как использовать интерфейсы, чтобы соответствовать открытым закрытым принципам?

Python не обеспечивает соблюдение всех классов, реализующих интерфейс для определения всех абстрактных функций интерфейса в отличие от других языков (Java, C #, C ++ и т. Д.)

Итак, давайте посмотрим, как сделать эту работу в Python.

Если вы заинтересованы в изучении, как другие языки реализуют интерфейсы, вы можете взглянуть на это Блог цифрового океана Отказ

class Animal:
    def __init__(self, name):
        self.name = name

    def get_name(self):
        pass

    def make_sound(self):
        pass


class Lion(Animal):
    def make_sound(self):
        print("roar")

class Mouse(Animal):
    def make_sound(self):
        print("squeak")

class Cow(Animal):
    def make_sound(self):
        print("moo")

def animal_sounds(animals):
    for animal in animals:
        animal.make_sound()

animals = [
    Lion(name="Big Cat"),
    Mouse(name="Squeakie")
]

animal_sounds(animals)

Класс животных сейчас имеет make_sound Абстрактная функция. Другие классы животных (лев, мышь и т. Д.) расширили класс животных и внедрили свое собственное определение функции make_sound.

Функция Animal_sounds итерации по поводу животных и вызывает их реализацию функции make_sound.

Теперь, если необходимо добавить новое животное, нам не нужно менять класс животных, мы можем реализовать новый класс для этого животного и Animal_Sounds () позвонит в реализацию функции make_sound для этого животного.

Таким образом, класс животных сейчас соответствует открытому закрытому принципу программирования.

Мои источники:

  1. Университет Юта
  2. Цифровой океан
  3. Этот Github Repo я нашел в Google

Этот пост является частью 2 серии, обратно к основам, каждый из которых прикрывает один солидный принцип.

Оригинал: “https://dev.to/khushboo/back-to-basics-solid-principles-part-2-f3f”