2024行业资讯 > > 正文
2024 07/ 07 10:05:31
来源:编辑柚子

设计模式解析:生成器模式代码案例与博客分享

字体:

设计模式解析:生成器模式代码案例与博客分享

在现代软件开发中,设计模式是应对特定疑问的一套成熟的方案。它们可帮助咱们增进代码的可维护性、可读性和扩展性。本文将重点介绍生成器模式(Builder Pattern),这是一种创建型设计模式,它允我们分步骤创建复杂对象,同时将对象的构建与其表示相分离。

一、生成器模式概述

生成器模式,也称为建造者模式,其核心思想是将一个复杂对象的创建与它的表示分离使得同样的创建过程可有不同的表示。此类模式适用于那些需要创建多个组成部分或具有多个可选部件的对象。

生成器模式的主要组成如下:

1. 生成器(Builder):负责定义构建产品的各个步骤和顺序,提供创建对象的方法。

2. 具体生成器(Concrete Builder):实现生成器接口,提供构建对象的具体实现。

3. 产品(Product):最生成的复杂对象。

4. 指导者(Director):负责安排已有模块的构建顺序,并通知生成器开始构建。

5. 客户端(Client):利用生成器接口创建对象。

二、生成器模式的应用场景

生成器模式适用于以下几种情况:

1. 创建复杂对象时,构造过程和表示分离。

2. 需要创建多种不同类型的对象,但它们有共同的部分。

3. 客户端需要创建不同表示的对象。

下面我们将通过一个代码案例来详细解析生成器模式。

三、生成器模式代码案例

以下是一个汽车及其利用手册的生成器模式实现:

```python

# 产品类

class Car:

def __init__(self):

self.name = None

self.engine = None

self.transmission = None

def set_name(self, name):

self.name = name

def set_engine(self, engine):

self.engine = engine

def set_transmission(self, transmission):

self.transmission = transmission

def __str__(self):

return fCar(name={self.name}, engine={self.engine}, transmission={self.transmission})

设计模式解析:生成器模式代码案例与博客分享

设计模式解析:生成器模式代码案例与博客分享

# 利用手册类

class Manual:

def __init__(self):

self.name = None

self.engine = None

self.transmission = None

def set_name(self, name):

self.name = name

def set_engine(self, engine):

self.engine = engine

def set_transmission(self, transmission):

self.transmission = transmission

def __str__(self):

return fManual(name={self.name}, engine={self.engine}, transmission={self.transmission})

# 生成器抽象类

class CarBuilder:

def __init__(self):

self.car = Car()

self.manual = Manual()

def build_name(self, name):

pass

def build_engine(self, engine):

pass

def build_transmission(self, transmission):

pass

# 具体生成器类

class CarBuilderImpl(CarBuilder):

def build_name(self, name):

self.car.set_name(name)

self.manual.set_name(name)

def build_engine(self, engine):

self.car.set_engine(engine)

设计模式解析:生成器模式代码案例与博客分享

设计模式解析:生成器模式代码案例与博客分享

self.manual.set_engine(engine)

def build_transmission(self, transmission):

self.car.set_transmission(transmission)

self.manual.set_transmission(transmission)

# 指导者类

class Director:

def __init__(self, builder):

self.builder = builder

def construct_car(self, name, engine, transmission):

self.builder.build_name(name)

self.builder.build_engine(engine)

self.builder.build_transmission(transmission)

# 客户端

def mn():

builder = CarBuilderImpl()

director = Director(builder)

director.construct_car(Model S, Electric, Automatic)

car = builder.car

manual = builder.manual

print(car)

print(manual)

if __name__ == __mn__:

mn()

```

在这个例子中,`CarBuilder` 是生成器的抽象类定义了构建汽车的步骤。`CarBuilderImpl` 是具体生成器类实现了这些步骤。`Director` 负责调用生成器的构建方法,并安排构建顺序。客户端通过调用 `mn()` 函数,创建了一个 `Car` 对象和相应的 `Manual` 对象。

四、博客分享

以下是若干关于生成器模式的博客分享供大家参考:

1. [设计模式之生成器模式(对象创建型模式)](https://www.cnblogs.com/zuoxiaolong/p/pattern11.html):介绍了生成器模式的概念、实现和应用场景。

2. [Python生成器用法解析](https://www.jianshu.com/p/0b7f2a1e6f2c):深入讲解了Python中生成器的用法、原理和关注事项。

3. [Go生成器模式讲解和代码示例](https://www

【纠错】 【责任编辑:编辑柚子】

Copyright © 2000 - 2023 All Rights Reserved.

辽B2-20140004-27.