架构师训练营第 0 期第三周作业
发布于: 2020 年 06 月 23 日
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
Code
package mainimport "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
划线
评论
复制
发布于: 2020 年 06 月 23 日阅读数: 97
无名氏
关注
还未添加个人签名 2017.09.11 加入
还未添加个人简介
评论