@@ -123,22 +123,24 @@ def __init__(self):
123123
124124 def getSingleObj (self , penType , name ):
125125 """获得唯一实例的对象"""
126+
127+
128+ def createPen (self , penType ):
129+ """创建画笔"""
126130 if (self .__pens .get (penType ) is None ):
127131 # 如果该对象不存在,则创建一个对象并存到字典中
128- self .__pens [penType ] = LinePen (name )
132+ if penType == PenType .PenTypeLine :
133+ pen = LinePen ("直线画笔" )
134+ elif penType == PenType .PenTypeRect :
135+ pen = RectanglePen ("矩形画笔" )
136+ elif penType == PenType .PenTypeEllipse :
137+ pen = EllipsePen ("椭圆画笔" )
138+ else :
139+ pen = Pen ("" )
140+ self .__pens [penType ] = pen
129141 # 否则直接返回字典中的对象
130142 return self .__pens [penType ]
131143
132- def createPen (self , penType ):
133- """创建画笔"""
134- # Python中没有switch/case的语法,我们通过字典来来模拟switch/case的实现方式
135- switcher = {
136- PenType .PenTypeLine : self .getSingleObj (PenType .PenTypeLine , "直线画笔" ),
137- PenType .PenTypeRect : self .getSingleObj (PenType .PenTypeRect , "矩形画笔" ),
138- PenType .PenTypeEllipse : self .getSingleObj (PenType .PenTypeEllipse , "椭圆画笔" ),
139- }
140- return switcher .get (penType , Exception ("创建对象失败" ))
141-
142144
143145# 基于框架的实现
144146#==============================
@@ -156,13 +158,13 @@ def testCoffeeMaker():
156158def testPenFactory ():
157159 factory = PenFactory ()
158160 linePen = factory .createPen (PenType .PenTypeLine )
159- print ("创建了 %s,对象id:%s" % (linePen .getName (), id (linePen )) )
161+ print ("创建了 %s,对象id:%s, 类型:%s " % (linePen .getName (), id (linePen ), linePen . getType ( )) )
160162 rectPen = factory .createPen (PenType .PenTypeRect )
161- print ("创建了 %s,对象id:%s" % (rectPen .getName (), id (rectPen )) )
163+ print ("创建了 %s,对象id:%s, 类型:%s " % (rectPen .getName (), id (rectPen ), rectPen . getType ()) )
162164 rectPen2 = factory .createPen (PenType .PenTypeRect )
163- print ("创建了 %s,对象id:%s" % (rectPen2 .getName (), id (rectPen2 )) )
165+ print ("创建了 %s,对象id:%s, 类型:%s " % (rectPen2 .getName (), id (rectPen2 ), rectPen2 . getType ()) )
164166 ellipsePen = factory .createPen (PenType .PenTypeEllipse )
165- print ("创建了 %s,对象id:%s" % (ellipsePen .getName (), id (ellipsePen )) )
167+ print ("创建了 %s,对象id:%s, 类型:%s " % (ellipsePen .getName (), id (ellipsePen ), ellipsePen . getType ()) )
166168
167169
168170# testCoffeeMaker()
0 commit comments