写点什么

架构师训练营第二期 Week 3 作业

用户头像
bigxiang
关注
发布于: 2020 年 11 月 08 日
  1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。


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


module Renderable  def render    raise NotImplementedError  endend
class SimpleComponent include Renderable
attr_accessor :name
def initialize(name) self.name = name end
def render puts "print #{type}(#{name})" end
private
def type raise NotImplementedError endend
class CompositeComponent < SimpleComponent attr_accessor :components
def initialize(name, components = []) super(name) self.components = components end
def render super components.each(&:render) endend
class Picture < SimpleComponent def type 'Picture' endend
class Button < SimpleComponent def type 'Button' endend
class Label < SimpleComponent def type 'Label' endend
class TextBox < SimpleComponent def type 'TextBox' endend
class PasswordBox < SimpleComponent def type 'PasswordBox' endend
class CheckBox < SimpleComponent def type 'CheckBox' endend
class LinkLabel < SimpleComponent def type 'LinkLabel' endend
class Frame < CompositeComponent def type 'Frame' endend
class WinForm < CompositeComponent def type 'WinForm' endend
WinForm.new( 'WINDOW窗口', [ Picture.new('LOGO图片'), Button.new('登录'), Button.new('注册'), Frame.new('FRAME1', [ Label.new('用户名'), TextBox.new('文本框'), Label.new('密码'), PasswordBox.new('密码框'), CheckBox.new('复选框'), TextBox.new('记住用户名'), LinkLabel.new('忘记密码') ]) ]).render

复制代码


输出如下:

➜  ruby composite_pattern.rbprint WinForm(WINDOW窗口)print Picture(LOGO图片)print Button(登录)print Button(注册)print Frame(FRAME1)print Label(用户名)print TextBox(文本框)print Label(密码)print PasswordBox(密码框)print CheckBox(复选框)print TextBox(记住用户名)print LinkLabel(忘记密码)
复制代码


用户头像

bigxiang

关注

还未添加个人签名 2018.03.21 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第二期 Week 3 作业