设计模式(2)
时间: 2024-10-18 21:55:37
(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)
当然可以!下面我将进一步深入一些常见设计模式的特点、适用场景和实例代码示例,以帮助你更好地理解和应用这些模式。
一、创建型模式
1. 单例模式(Singleton Pattern)
- 特点:确保某个类只有一个实例,并提供一个访问这个实例的全局访问方式。
- 适用场景:需要控制资源的访问,如线程池、数据库连接等。
pythonclass 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)
- 特点:定义一个创建对象的接口,但由子类决定实例化哪个类。
- 适用场景:希望将实例化操作延迟到子类中进行。
pythonclass 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)
- 特点:提供一个接口用于创建一系列相关或相互依赖的对象。
- 适用场景:需要创建不同种类相关的对象时。
pythonclass 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 语句时非常有用。
pythonclass 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)
- 特点:通过复制已有的实例来创建新实例,而不是通过构造函数创建。
- 适用场景:当创建对象的成本成本较高时,可以使用原型模式来降低成本。
pythonimport copy
class Prototype:
def clone(self):
return copy.deepcopy(self)
prototype_instance = Prototype()
new_instance = prototype_instance.clone()