建造者模式Python版--好菜每回味不同(第13章)

45 篇文章 0 订阅

class PersonBuilder:
    graphics = None
    pen = None
    def __init__(self, graphics, pen):
        self.graphics = graphics
        self.pen = pen
    def BuildHead(self):
        pass
    def BuildBody(self):
        pass
    def BuildArmLeft(self):
        pass
    def BuildArmRight(self):
        pass
    def BuildLegLeft(self):
        pass
    def BuildLegRight(self):
        pass
    	
class PersonThinBuilder(PersonBuilder):
    def __init__(self, graphics, pen):
        PersonBuilder.__init__(graphics, pen)
    def BuildHead(self):
        self.graphics.DrawEllipse(self.pen, 50, 20, 30, 30)
    def BuildBody(self):
        self.graphics.DrawEllipse(self.pen, 60, 50, 10, 50)
		
    def BuildArmLeft(self):
        self.graphics.DrawEllipse(self.pen, 60, 50, 40, 100)
    def BuildArmRight(self):
        self.graphics.DrawEllipse(self.pen, 70, 50, 90, 100)		
    def BuildLegLeft(self):
        self.graphics.DrawEllipse(self.pen, 60, 100, 45, 150)
    def BuildLegRight(self):
        self.graphics.DrawEllipse(self.pen, 70, 100, 85, 150)	

class PersonDirector:
    def __init__(self, pb):
        self.pb = pb
    def CreatePerson(self):
        self.pb.BuildHead()
        self.pb.BuildBody()
        self.pb.BuildArmLeft()		
        self.pb.BuildArmRight()
        self.pb.BuildLegLeft()
        self.pb.BuildLegRight()

if __name__ == "__main__":
    p = Pen(Color.Yellow)
    ptb = PersonThinBuilder(pictureBox1.CreateGraphics(), p)
    pdThin = PersonDirector(ptb)
    pdThin.CreatePerson()
    pfb = PersonFatBuilder(pictureBox1.CreateGraphics(), p)
    pdFat = PersonDirector(pfb)
    pdFat.CreatePerson()	

创造者模式基本代码

Product类---产品类,由多个部件组成

class Product:
     parts = []
     def Add(self, part):
           self.parts.append(part)
     def Show(self):
           print “Product buildup————”
            for elem in self.parts:
                  print elem

Builder类----抽象建造者

class Builder:
     def BuildParterA(self):
           pass
     def BuildParterB(self):
           pass
     def GetResult(self): 
            pass  

ConcreteBuilder1类--具体建造者类

class ConcreteBuilder1(Builder):
     p = Product()
     def BuildPartA(self):
           self.p.Add("Part A")
     def BuildPartB(self):
           self.p.Add("Part B")
     def GetResult(self):
           return self.p
class ConcreteBuilder2(Builder):
    p = Product()
    def BuildPartA(self):
        p.Add("Part X")
    def BuildPartB(self):
        p.Add("Part Y")	
    def GetResult(self):
        return p 
    	
class Director:
    def Construct(self, builder):
        builder.BuildPartA()
        builder.BuildPartB()
		
if __name__ == "__main__":
    diretor = Director()
    b1 = ConcreteBuilder1()
    b2 = ConcreteBuilder2()
    director.Construct(b1)
    p1 = b1.GetResult()
    p1.Show()	
    director.Construct(b2)
    p2 = b2.GetResult()
    p2.Show()	

建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。


    













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值