Python设计模式之建造者模式实例详解

作者:Andy冉明 时间:2021-07-13 17:37:03 

本文实例讲述了Python设计模式之建造者模式。分享给大家供大家参考,具体如下:

建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

下面是一个建造者模式的demo


#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——建造者模式
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以常见不同的表示
特性: 指挥者(Director) 指挥 建造者(Builder) 建造 Product
"""
import abc
class Builder(object):
 __metaclass__ = abc.ABCMeta
 @abc.abstractmethod
 def create_header(self):
   pass
 @abc.abstractmethod
 def create_body(self):
   pass
 @abc.abstractmethod
 def create_hand(self):
   pass
 @abc.abstractmethod
 def create_foot(self):
   pass
class Thin(Builder):
 def create_header(self):
   print '瘦子的头'
 def create_body(self):
   print '瘦子的身体'
 def create_hand(self):
   print '瘦子的手'
 def create_foot(self):
   print '瘦子的脚'
class Fat(Builder):
 def create_header(self):
   print '胖子的头'
 def create_body(self):
   print '胖子的身体'
 def create_hand(self):
   print '胖子的手'
 def create_foot(self):
   print '胖子的脚'
class Director(object):
 def __init__(self, person):
   self.person = person
 def create_preson(self):
   self.person.create_header()
   self.person.create_body()
   self.person.create_hand()
   self.person.create_foot()
if __name__=="__main__":
 thin = Thin()
 fat = Fat()
 director_thin = Director(thin)
 director_fat = Director(fat)
 director_thin.create_preson()
 director_fat.create_preson()

运行结果:

瘦子的头
瘦子的身体
瘦子的手
瘦子的脚
胖子的头
胖子的身体
胖子的手
胖子的脚

上面类的设计如下图:

Python设计模式之建造者模式实例详解

指挥者Director 调用建造者Builder的对象 具体的建造过程是在Builder的子类中实现的

希望本文所述对大家Python程序设计有所帮助。

来源:https://www.cnblogs.com/onepiece-andy/p/python-builder-pattern.html

标签:Python,设计模式,建造者模式
0
投稿

猜你喜欢

  • python包相关知识点之包的导入、相对路径以及绝对路径

    2023-08-11 11:09:46
  • python web.py启动https端口的方式

    2021-10-20 11:33:44
  • Openlayers学习之地图比例尺控件

    2024-04-10 10:36:59
  • 原生js封装的一些jquery方法(详解)

    2024-04-19 09:47:01
  • Python内建函数之raw_input()与input()代码解析

    2021-01-12 01:37:36
  • 完美卸载Oracle数据库

    2024-01-18 02:50:27
  • Python语法之精妙的十个知识点(装B语法)

    2022-04-15 21:43:51
  • PHP实现更改hosts文件的方法示例

    2023-10-19 18:30:12
  • 详解Open Folder as PyCharm Project怎么添加的方法

    2021-06-25 05:56:53
  • Python列表解析操作实例总结

    2022-10-10 09:59:38
  • Python实现迭代时使用索引的方法示例

    2022-12-15 11:08:48
  • python+pygame实现简易五子棋小游戏的三种方式

    2023-09-26 06:01:43
  • Python的Django框架中settings文件的部署建议

    2023-07-08 21:39:43
  • python开发之str.format()用法实例分析

    2022-01-15 22:10:23
  • Python时间操作之pytz模块使用详解

    2023-05-10 02:57:17
  • SQL Server 2008 正式版安装指南 包含序列号

    2024-01-14 19:12:47
  • 详解go语言中sort如何排序

    2023-09-03 14:00:38
  • 详解Python读取和写入操作CSV文件的方法

    2021-03-01 23:13:43
  • 分享JavaScript与Java中MD5使用两个例子

    2024-05-22 10:40:17
  • 小结下dom节点操作

    2011-03-08 10:33:00
  • asp之家 网络编程 m.aspxhome.com