python中fac_python中的factory method 模式

代码清单5:editablefactory.py

class EditableFactory:

""" 用于创建Editable的工厂类 """

# 实例化Editable对象

def createEditable(self, master):

pass

代码清单6:editableaddressfactory.py

from editablefactory import EditableFactory

from editableaddress import EditableAddress

class EditableAddressFactory(EditableFactory):

""" 用于创建EditableAddress的工厂类 """

# 重载EditableFactory中的方法,实例化EditableAddress对象

def createEditable(self, master):

address = EditableAddress(master)

return address

代码清单7:editablephonefactory.py

from editablefactory import EditableFactory

from editablephone import EditablePhone

class EditablePhoneFactory(EditableFactory):

""" 用于创建EditablePhone的工厂类 """

# 重载EditableFactory中的方法,实例化EditablePhone对象

def createEditable(self, master):

phone = EditablePhone(master)

return phone

代码清单8:pim.py

from editablephone import EditablePhonefrom editableaddressfactory import EditableAddressFactory

from editablephonefactory import EditablePhoneFactory

import Tkinter

class PIM:

""" 个人信息管理 """

# 构造函数

def __init__(self):

mainFrame = Tkinter.Frame()

mainFrame.master.title("PIM")

# 命令按钮

addressButton = Tkinter.Button(mainFrame, width=10, text="Address")

phoneButton = Tkinter.Button(mainFrame, width=10, text="Phone")

commitButton = Tkinter.Button(mainFrame, width=10, text="Commit")

resetButton = Tkinter.Button(mainFrame, width=10, text="Reset")

addressButton.config(command=self.addressClicked)

phoneButton.config(command=self.phoneClicked)

commitButton.config(command=self.commitClicked)

resetButton.config(command=self.resetClicked)

addressButton.grid(row=0, column=1, padx=10, pady=5, stick=Tkinter.E)

phoneButton.grid(row=1, column=1, padx=10, pady=5, stick=Tkinter.E)

commitButton.grid(row=2, column=1, padx=10, pady=5, stick=Tkinter.E)

resetButton.grid(row=3, column=1, padx=10, pady=5, stick=Tkinter.E)

# 用来容纳各类Editor的容器

self.editorFrame = Tkinter.Frame(mainFrame)

self.editorFrame.grid(row=0, column=0, rowspan=4)

self.editorFrame.grid_configure(stick=Tkinter.N, pady=15)

self.editor = Tkinter.Frame(self.editorFrame)

self.editor.grid()

# 个人信息显示区域

self.content = Tkinter.StringVar()

self.contentLabel = Tkinter.Label(mainFrame, width=50, height=5)

self.contentLabel.configure(textvariable=self.content)

self.contentLabel.configure(anchor=Tkinter.W, font="Arial 10 italic bold")

self.contentLabel.configure(relief=Tkinter.RIDGE, pady=5, padx=10)

self.contentLabel.grid(row=4, column=0, columnspan=2)

mainFrame.pack()

mainFrame.mainloop()

# Address按钮的回调函数

def addressClicked(self):

address = EditableAddressFactory().createEditable(self.editorFrame)

self.editor.grid_remove()

self.editor = address.getEditor()

self.editor.getUI().grid()

# Phone按钮的回调函数

def phoneClicked(self):

phone = EditablePhoneFactory().createEditable(self.editorFrame)

self.editor.grid_remove()

self.editor = phone.getEditor()

self.editor.getUI().grid()

# Commit按钮的回调函数

def commitClicked(self):

content = self.editor.getContent()

self.content.set(content)

# Reset按钮的回调函数

def resetClicked(self):

self.editor.resetUI()

# 主函数

if (__name__ == "__main__"):

app = PIM()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值