WEB开发网
开发学院软件开发Python Python设计模式系列之三: 创建型Factory Method模... 阅读

Python设计模式系列之三: 创建型Factory Method模式

 2007-03-30 12:55:15 来源:WEB开发网   
核心提示: EditablePhone是Editable的另一个具体实现,PIM使用它来处理个人电话号码,Python设计模式系列之三: 创建型Factory Method模式(6),其完整的代码如清单4所示,代码清单4:editablephone.pyfrom editor import Edito

EditablePhone是Editable的另一个具体实现,PIM使用它来处理个人电话号码,其完整的代码如清单4所示。

  代码清单4:editablephone.py
from editor import Editor
from editable import Editable
import Tkinter
class EditablePhone(Editable):
 """ 用于处理个人电话号码的Editable """
 
 # 构造函数
 def __init__(self, master):
  self.master =master
  self.areaCode = "";
  self.phoneNumber = ""
  self.editor = PhoneEditor(self)
  
 # 获取相关联的Editor
 def getEditor(self):
  return self.editor
 
class PhoneEditor(Editor, Tkinter.Frame):
 """ 用于处理个人电话号码的Editor """
 
 # 构造函数
 def __init__(self, owner):
  self.owner = owner
  Tkinter.Frame.__init__(self, self.owner.master)
  self.areaCode = Tkinter.StringVar()
  self.phoneNumber = Tkinter.StringVar()
  # 构造用户界面
  codeLabel = Tkinter.Label(self, text="Area Code:")
  codeEntry = Tkinter.Entry(self, textvariable=self.areaCode)
  codeLabel.config(anchor=Tkinter.E, width=12, pady=3)
  codeLabel.grid(row=0, column=0)
  codeEntry.grid(row=0, column=1)
  
  numberLabel = Tkinter.Label(self, text="Phone Number:")
  numberEntry = Tkinter.Entry(self, textvariable=self.phoneNumber)
  numberLabel.config(anchor=Tkinter.E, width=12, pady=3)
  numberLabel.grid(row=1, column=0)
  numberEntry.grid(row=1, column=1)
  
 # 重载Editor中的方法,获取代表用户界面(UI)的对象
 def getUI(self):
  return self
 
 # 重载Editor中的方法,获取用户输入的数据
 def getContent(self):
  content = "  Area Code: " + self.areaCode.get() + "
"
  content += "Phone Number: " + self.phoneNumber.get() + "
"
  return content
 # 重载Editor中的方法,提交用户输入的数据
 def commitChanges(self):
  self.owner.areaCode = self.areaCode.get()
  self.owner.phoneNumber = self.phoneNumber.get()
  
 # 重载Editor中的方法,清空用户输入的数据
 def resetUI(self):
  self.areaCode.set("")
  self.phoneNumber.set("")

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Python 设计模式 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接