您的位置:首页 > 编程语言 > Python开发

Python的创建型设计模式之抽象工厂模式

2017-03-29 14:26 399 查看
注:书上定义和展示代码均来自《Python编程实战》

抽象工厂模式,书上定义:用来创建复杂的对象,这种对象由许多小的对象组成,而这些小的对象都属于特定的“系列”。回头再读这段话,然后再回想敲过书上的这个实例。

用简单话来概括就是,你现在要完成一个东西,这个东西里面有几部分(3部分吧),这3部分吧,你可以用红色完成,但你也可以用绿色完成,反正最后这个东西成型了,咦你一看,哦这里面是3部分哦。因此,关键就在于红色有它自己的心路历程,绿色也有它的心路历程,但是总的目的,都是成为这个东西的一部分。这是我现在所能举例子来说明的所谓“经典的抽象工厂模式”。

而python风格的抽象工厂模式是,因为,虽然红色是红色,绿色是绿色,但它们要成为这个东西的一部分,有些心路历程是一样的嘛,因此,没有必要把这些一样的心路历程再写一边,需要完成的就是属于自己的那部分。

class RedFactory:

@classmethod
def make_diagram(Class, width, height):
return Class.Diagram(width, height)

@classmethod
def make_rectangle(Class, x, y, width, height, fill="white", stroke="black"):
return Class.Rectangle(x, y, width, height, fill, stroke)

@classmethod
def make_text(Class, x, y, text, fontsize=12):
return Class.Text(x, y, text, fontsize)

class Text:
def __init__(self, x, y, text, fontsize):
self.x = x
self.y = y
self.rows = [list(text)]

class Rectangle:
def __init__(self, x, y, width, height, fill, stroke):
pass

class Diagram:
def __init__(self, width, height):
self.width = width
self.height = height

def add(self):
pass

class GreenFactory(RedFactory):
SVE_TEXT = """<text x="{x}" y="{y}" text-anchor="left" font-family="sans-serif"
font-siez="{fontsize}">{text}</text>"""
SVE_SCALE = 20

class Text:
def __init__(self, x, y, text, fontsize):
x *= SvgDiagramFactory.SVE_SCALE
y *= SvgDiagramFactory.SVE_SCALE

class Rectangle:
def __init__(self):
pass

class Diagram:
def __init__(self):
pass

def add(self):
pass


我们具体看看代码,红色和绿色所共有的心路历程,叫做“类方法”,到时调用这些方法的时候,就是红色、绿色这个类调用。

我个人这里对抽象工厂模式还是没什么感觉呢,只能说自己接触的少吧。这种模式就是慢慢向并发理念靠近哦?我是这样想,好比AB两个人同时完成一件事,这样抽象工程模式可能比AB两人完全不鸟对方只顾各自完成自己的任务高吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: