首页 经验

设计模式(2)

时间: 2024-10-18 21:55:37

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)


当然可以!下面我将进一步深入一些常见设计模式的特点、适用场景和实例代码示例,以帮助你更好地理解和应用这些模式。


一、创建型模式


1. 单例模式(Singleton Pattern)


   - 特点:确保某个类只有一个实例,并提供一个访问这个实例的全局访问方式。

   - 适用场景:需要控制资源的访问,如线程池、数据库连接等。


   

python

   class Singleton:

       _instance = None


       def __new__(cls):

           if cls._instance is None:

               cls._instance = super(Singleton, cls).__new__(cls)

           return cls._instance


   s1 = Singleton()

   s2 = Singleton()

   print(s1 is s2)  # 输出: True

   


2. 工厂方法模式(Factory Method Pattern)


   - 特点:定义一个创建对象的接口,但由子类决定实例化哪个类。

   - 适用场景:希望将实例化操作延迟到子类中进行。


   

python

   class Product:

       def operation(self):

           pass


   class ConcreteProduct(Product):

       def operation(self):

           return "具体产品"


   class Creator:

       def factory_method(self):

           return ConcreteProduct()


   creator = Creator()

   product = creator.factory_method()

   print(product.operation())  # 输出: 具体产品

   


3. 抽象工厂模式(Abstract Factory Pattern)


   - 特点:提供一个接口用于创建一系列相关或相互依赖的对象。

   - 适用场景:需要创建不同种类相关的对象时。


   

python

   class AbstractFactory:

       def create_product_a(self):

           pass


       def create_product_b(self):

           pass


   class ConcreteFactory1(AbstractFactory):

       def create_product_a(self):

           return "产品A1"


       def create_product_b(self):

           return "产品B1"


   factory = ConcreteFactory1()

   print(factory.create_product_a())  # 输出: 产品A1

   print(factory.create_product_b())  # 输出: 产品B1

   


4. 建造者模式(Builder Pattern)


   - 特点:将一个复杂对象的构建与表示分离,允许同样的构建过程创建不同的表示。

   - 适用场景:构建复杂的对象,如构建器模式在编写复杂的 SQL 语句时非常有用。


   

python

   class Builder:

       def reset(self):

           self.product = Product()


       def build_part_a(self):

           self.product.add("部件A")


       def build_part_b(self):

           self.product.add("部件B")


   class Product:

       def __init__(self):

           self.parts = []


       def add(self, part):

           self.parts.append(part)


   builder = Builder()

   builder.build_part_a()

   builder.build_part_b()

   


5. 原型模式(Prototype Pattern)


   - 特点:通过复制已有的实例来创建新实例,而不是通过构造函数创建。

   - 适用场景:当创建对象的成本成本较高时,可以使用原型模式来降低成本。


   

python

   import copy


   class Prototype:

       def clone(self):

           return copy.deepcopy(self)


   prototype_instance = Prototype()

   new_instance = prototype_instance.clone()

   


上一个 设计模式 2024 文章列表 下一个 设计模式(3)

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号