架构师训练营(第 3 周作业)

用户头像
李德政
关注
发布于: 2020 年 06 月 24 日
架构师训练营(第 3周作业)

1. 作业一

请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。

Python单例模式代码实现:

2. 作业二

请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图



Python组合模式实现:composite_design_pattern.py

#! /usr/bin/env python
# -*- coding: utf-8 -*-
class Base(object):
def __init__(self, desc):
self.name = self.__class__.__name__ + ' (' + desc + ')'
self.obj_list = []
def do(self):
print(self.name)
for obj in self.obj_list:
obj.do()
return
def add(self, obj):
self.obj_list.append(obj)
return
class WinForm(Base):
def __init__(self, desc):
super(WinForm, self).__init__(desc)
class Picture(Base):
def __init__(self, desc):
super(Picture, self).__init__(desc)
class Button(Base):
def __init__(self, desc):
super(Button, self).__init__(desc)
class Frame(Base):
def __init__(self, desc):
super(Frame, self).__init__(desc)
class Label(Base):
def __init__(self, desc):
super(Label, self).__init__(desc)
class TextBox(Base):
def __init__(self, desc):
super(TextBox, self).__init__(desc)
class CheckBox(Base):
def __init__(self, desc):
super(CheckBox, self).__init__(desc)
class LinkLabel(Base):
def __init__(self, desc):
super(LinkLabel, self).__init__(desc)
def main():
# 构造frame
frame = Frame('frame1')
frame.add(Label('用户名'))
frame.add(TextBox('文本框'))
frame.add(Label('密码'))
frame.add(TextBox('密码框'))
frame.add(CheckBox('复选框'))
frame.add(TextBox('记住用户名'))
frame.add(TextBox('忘记密码'))
# 构造window
w = WinForm('Window窗口')
w.add(Picture('Logo图片'))
w.add(Button('登录'))
w.add(Button('注册'))
w.add(frame)
# 生成: 如果有必要,子类可以重写父类的do方法
w.do()
if __name__ == '__main__':
main()



发布于: 2020 年 06 月 24 日 阅读数: 35
用户头像

李德政

关注

还未添加个人签名 2017.11.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营(第 3周作业)