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

yipeiwu_com6年前Python基础

本文实例讲述了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()

运行结果:

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

上面类的设计如下图:

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

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

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

相关文章

django 基于中间件实现限制ip频繁访问过程详解

额额,标题已经很醒目了,通过中间件去实现,其他方法也可以实现 浏览器前端传来的请求,必须通过中间件,才能到后面路由,视图函数,所以我们在中间件那里做一层处理,我们还需要知道是哪个ip,在...

python的re正则表达式实例代码

本文研究的主要是python的re正则表达式的相关内容,具体如下。 概念:正则表达式(通项公式)是用来简洁表达一组字符串的表达式。优势是简洁,一行胜千言。 应用:字符串匹配。 实例代码...

利用Python产生加密表和解密表的实现方法

利用Python产生加密表和解密表的实现方法

序言: 这是我第一次写博客,有不足之处,希望大家指出,谢谢! 这次的题目一共有三个难度,分别是简单,中等偏下,中等。对于一些刚刚入门的小伙伴来说,比较友好。废话不多说,直接进入正题。...

python实现汉诺塔递归算法经典案例

python实现汉诺塔递归算法经典案例

    学到递归的时候有个汉诺塔的练习,汉诺塔应该是学习计算机递归算法的经典入门案例了,所以本人觉得可以写篇博客来表达一下自己的见解。这markdown编辑...

pandas DataFrame创建方法的方式

pandas DataFrame创建方法的方式

在pandas里,DataFrame是最经常用的数据结构,这里总结生成和添加数据的方法: ①、把其他格式的数据整理到DataFrame中; ②在已有的DataFrame中插入N列或者N...