架构师训练营第 0 期第三周作业

用户头像
无名氏
关注
发布于: 2020 年 06 月 23 日



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



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





Code

package main
import "fmt"
type Printer interface {
Print()
}
type Component struct {
children []*Component
kind string
name string
}
func NewComponent(kind, name string) *Component {
return &Component{
kind: kind,
name: name,
children: []*Component{},
}
}
func (c *Component) AddChildren(children ...*Component) {
if c.children == nil {
c.children = []*Component{}
}
c.children = append(c.children, children...)
}
func (c *Component) Print() {
fmt.Printf("print %s(%s)\n", c.kind, c.name)
for _, child := range c.children {
child.Print()
}
}
func main() {
frame := NewComponent("Frame", "FRAME1")
frame.AddChildren(
NewComponent("Label", "用户名"),
NewComponent("TextBox", "文本框"),
NewComponent("Label", "密码"),
NewComponent("PasswordBox", "密码框"),
NewComponent("CheckBox", "复选框"),
NewComponent("TextBox", "记住用户名"),
NewComponent("LinkLabel", "忘记密码"),
)
winForm := NewComponent("WinForm", "WINDOW窗口")
winForm.AddChildren(
NewComponent("Picture", "LOGO图片"),
NewComponent("Button", "登录"),
NewComponent("Button", "注册"),
frame,
)
winForm.Print()
}



Output



用户头像

无名氏

关注

还未添加个人签名 2017.09.11 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 0 期第三周作业