架构师第一期作业(第三周)
请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
版权声明: 本文为 InfoQ 作者【Cheer】的原创文章。
原文链接:【http://xie.infoq.cn/article/eb95e372fd40ef25c6988a8e0】。未经作者许可,禁止转载。
请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
# Interfaceclass Printable def print raise "Not implemented" endendclass UIComponent < Printable def initialize(name) @name = name end def print puts "print " + self.class.name + "(#{@name})" endendclass Container < UIComponent def initialize(name) super(name) @children = [] end def print super @children.each do |child| child.print end end def addChild child @children << child endend# Containersclass WinForm < Containerendclass Frame < Containerend# Controlsclass Picture < UIComponentendclass Button < UIComponentendclass Lable < UIComponentendclass TextBox < UIComponentendclass CheckBox < UIComponentendclass PasswordBox < TextBoxendclass LinkLable < Lableend# set up uiswin = WinForm.new("WINDOW窗口")win.addChild(Picture.new('LOGO图片'))win.addChild(Button.new('登录'))win.addChild(Button.new('注册'))frame = Frame.new('FRAME1')win.addChild(frame)frame.addChild(Lable.new('用户名'))frame.addChild(TextBox.new('文本框'))frame.addChild(Lable.new('密码'))frame.addChild(PasswordBox.new('密码框'))frame.addChild(CheckBox.new('复选框'))frame.addChild(TextBox.new('记住用户名'))frame.addChild(LinkLable.new('忘记密码'))# printwin.print
版权声明: 本文为 InfoQ 作者【Cheer】的原创文章。
原文链接:【http://xie.infoq.cn/article/eb95e372fd40ef25c6988a8e0】。未经作者许可,禁止转载。
还未添加个人签名 2018.11.25 加入
还未添加个人简介
促进软件开发及相关领域知识与创新的传播
评论