架构师训练营 -week3- 作业

用户头像
Geek_5a6ca3
关注
发布于: 2020 年 06 月 24 日

作业一:

请在草稿纸上手写一个单例模式的实现代码





作业二:

作业描述



组合模式

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。



代码实现

class Component(object):
"""
组件抽象类
"""

def __init__(self, name):
self.name = name

def add(self, comp):
"""
添加组件
:param comp: 组件
:return:
"""
pass

def remove(self, comp):
"""
移除组件
:param comp: 组件
:return:
"""
pass

def display(self):
pass


class Leaf(Component):
"""
叶节点
"""
def __init__(self, name):
super().__init__(name)

def display(self):
"""
打印叶节点
:return:
"""
print(self.name)


class Composite(Component):
"""
枝节点 可以添加子节点
"""

def __init__(self, name):
super().__init__(name)
self.children = []

def add(self, comp):
""""""
self.children.append(comp)

def remove(self, comp):
self.children.remove(comp)

def display(self):
"""
先输出自身 再挨个输出子节点
:return:
"""
print(self.name)
for comp in self.children:
comp.display()

if __name__ == "__main__":

winForm = Composite("WinForm(WINDOW窗口)")

winForm.add(Leaf("Picture(LOGO图片)"))
winForm.add(Leaf("Button(登录)"))
winForm.add(Leaf("Button(注册)"))

frame = Composite("Frame(FRAME1)")
winForm.add(frame)

frame.add(Leaf("Lable(用户名)"))
frame.add(Leaf("TextBox(文本框)"))
frame.add(Leaf("Lable(密码)"))
frame.add(Leaf("PasswordBox(密码框)"))
frame.add(Leaf("CheckBox(复选框)"))
frame.add(Leaf("TextBox(记住用户名)"))
frame.add(Leaf("LinkLable(忘记密码)"))

winForm.display()

打印结果



用户头像

Geek_5a6ca3

关注

还未添加个人签名 2019.09.16 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 -week3- 作业