掌握面向对象设计模式,轻松提升代码质量

发布时间:2025-06-08 02:37:48

面向东西计划形式是软件工程中的一种重要不雅点,它供给了一系列经过验证的处理打算,用于处理在软件开辟过程中常常碰到的成绩。控制面向东西计划形式,可能明显晋升代码品质,进步软件的可保护性、可扩大年夜性跟可重用性。以下是一些关键的计划形式跟它们怎样帮助开辟者晋升代码品质。

1. 计划形式概述

计划形式是一套被广泛承认的、用于描述在特定高低文中罕见成绩跟处理打算的模板或形式。计划形式最初由埃里希·伽玛(Erich Gamma)、理查德·赫尔姆(Richard Helm)、拉尔夫·约翰逊(Ralph Johnson)跟约翰·威利斯·维斯莱德(John Vlissides)四位学者提出,并在1994年出版的《计划形式:可复用面向东西软件的基本》一书中停止了具体阐述。

计划形式可能分为三大年夜类:

  • 创建型形式:涉及东西实例化机制,用以解耦东西的创建与利用。
  • 构外型形式:关注怎样将类或东西结合在一同构成更大年夜的构造。
  • 行动型形式:涉及东西之间的职责分配,它们描述了东西之间的通信形式。

2. 罕见计划形式及其利用

2.1 创建型形式

  • 单例形式(Singleton):确保一个类只有一个实例,并供给一个全局拜访点。常用于须要全局共享资本的场景,如数据库连接池。

    class Singleton:
      _instance = None
    
    
      @staticmethod
      def getInstance():
          if Singleton._instance is None:
              Singleton._instance = Singleton()
          return Singleton._instance
    
  • 工厂形式(Factory Method):定义一个用于创建东西的接口,让子类决定实例化哪一个类。解耦客户端代码跟具体类的实现。 “`python class AnimalFactory: def create_animal(self):

      pass
    

class DogFactory(AnimalFactory):

  def create_animal(self):
      return Dog()

class CatFactory(AnimalFactory):

  def create_animal(self):
      return Cat()

### 2.2 构外型形式

- **适配器形式(Adapter)**:将一个类的接口转换成客户端期望的接口。用于兼容不兼容的接口。
  ```python
  class Target:
      def request(self):
          pass

  class Adaptee:
      def specific_request(self):
          pass

  class Adapter(Target):
      _adaptee = None

      def __init__(self, adaptee):
          self._adaptee = adaptee

      def request(self):
          return self._adaptee.specific_request()
  • 装潢器形式(Decorator):静态地给一个东西增加额定的功能。用于在不修改原有东西构造的情况下增加功能。 “`python class Component: def operation(self): pass

class ConcreteComponent(Component):

  def operation(self):
      return "ConcreteComponent operation"

class Decorator(Component):

  _component = None

  def __init__(self, component):
      self._component = component

  def operation(self):
      return self._component.operation()

### 2.3 行动型形式

- **察看者形式(Observer)**:定义东西之间的一对多依附关联,当一个东西状况改变时,其全部依附东西都会收到告诉。用于实现变乱监听机制。
  ```python
  class Subject:
      def __init__(self):
          self._observers = []

      def attach(self, observer):
          self._observers.append(observer)

      def detach(self, observer):
          self._observers.remove(observer)

      def notify(self):
          for observer in self._observers:
              observer.update(self)

  class Observer:
      def update(self, subject):
          pass

  class ConcreteObserver(Observer):
      def update(self, subject):
          print(f"Observer: {subject}")

3. 总结

控制面向东西计划形式对晋升代码品质至关重要。经由过程公道利用计划形式,开辟者可能编写出愈加清楚、可保护跟可扩大年夜的代码。在现实开辟中,应根据具体场景抉择合适的计划形式,以进步软件品质。