Fabrika yöntemleri

Python'da Orta Düzey Nesne Yönelimli Programlama

Jake Roach

Data Engineer

Bir yöntem içinde koşullu mantık

class Student:
    # Tüm koşullar için benzer davranışlı koşullu mantık
    def explore_topic(self, resource_type, topic):
        if resource_type == "Textbook":
            print(f"{topic} konusuna ders kitabıyla başvuruluyor")
            self.reference_textbook(topic)

        elif resource_type == "Blog":
            print(f"Bloglardaki bilgileri doğrulamayı unutmayın!")
            self.reference_blog(topic)

        elif resource_type == "Video":
            self.reference_video(topic)
Python'da Orta Düzey Nesne Yönelimli Programlama

Fabrika yöntemleri

Diğer bir yöntemde kullanılacak nesneleri oluşturmak için fabrika yöntemlerini kullanan tasarım deseni

  • Bir arayüzü uygulayan nesneleri döndürür
  • Bir yöntemde karmaşıklığı azaltır
  • Yeniden kullanılabilir, modüler
  • Fabrika yöntemini belirtmek için _

$$

Önce ürünlere ve somut ürünlere bakalım!

...

  def _get_resource(self, resource_type):  
    if resource_type == "Textbook":
      # Textbook, Blog ve Video
      # birer kaynaktır
      return Textbook()  

    elif resource_type == "Blog":
      return Blog()  

    elif resource_type == "Video":
      return Video()
Python'da Orta Düzey Nesne Yönelimli Programlama

Bir Resource arayüzü oluşturma

class Resource(ABC):
    @abstractmethod
    def reference(self, topic):
        pass
class Textbook(Resource):
    def __init__(self):
        self.index = {"Object-oriented Programming": ["Inheritance", ...]}

    def reference(self, topic):
        print(f"{topic} konusuna ders kitabıyla başvuruluyor")
        return self.index.get(topic)

# Blog, Video için de benzeri
Python'da Orta Düzey Nesne Yönelimli Programlama

explore_topic() metodunu yeniden düzenleme

class Student:

    def explore_topic(self, resource_type, topic):
        if resource_type == "Textbook":
            texbook = Textbook()  # Resource'u uygulayan sınıftan bir örnek oluşturma
            texbook.reference(topic)  # reference() metodunu çağır

        elif resource_type == "Blog":
            blog = Blog()
            blog.reference(topic)

        elif resource_type == "Video":
            video = Video()
            video.reference(topic)
Python'da Orta Düzey Nesne Yönelimli Programlama

Bir fabrika yöntemi oluşturma

class Student:
    # Kaynak döndüren fabrika yöntemi
    def _get_resource(self, resource_type):
        if resource_type == "Textbook":
            return Textbook()  
        elif resource_type == "Blog":
            return Blog()  
        elif resource_type == "Video":
            return Video()

    def explore_topic(self, resource_type, topic):
        resource = self._get_resource(resource_type)  # Kaynağı al
        return resource.reference(topic)
Python'da Orta Düzey Nesne Yönelimli Programlama

Fabrika yöntemlerini kullanma

# Bir Student nesnesi oluşturun ve ardından bir ders kitabına başvursun
lester = Student()
lester.explore_topic("Textbook", "Object-oriented Programming")

# Başka bir kaynağa geçmek için
lester.explore_topic("Video", "Object-oriented Programming")
Object-oriented Programming konusuna ders kitabıyla başvuruluyor
["Inheritance", "Constructors", "Class-level methods"]

Videolar görsel veya işitsel öğrenenler için faydalıdır
["Classes", "Methods", "Attributes", "self"]
Python'da Orta Düzey Nesne Yönelimli Programlama

Ayo berlatih!

Python'da Orta Düzey Nesne Yönelimli Programlama

Preparing Video For Download...