架构师训练营(第 3 周作业)
发布于: 2020 年 06 月 24 日

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)        returnclass 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
版权声明: 本文为 InfoQ 作者【李德政】的原创文章。
原文链接:【http://xie.infoq.cn/article/0bf6ef13d160fd4ce6eb794d4】。文章转载请联系作者。
 
 李德政
  关注 
还未添加个人签名 2017.11.30 加入
还未添加个人简介
 
 
  
  
 
 
 
  
  
  
  
  
  
  
  
    
评论