写点什么

第三周 - 作业 1

发布于: 2020 年 11 月 08 日

1、请在草稿纸上手写一个单例模式的实现代码





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

package main

import ("fmt")

type Component interface {
Print()
}

type Form struct {
Name string
Child [] Component
}

func(form *Form) Add(child Component) {
form.Child = append(form.Child, child)
}

func(form Form) Print() {
fmt.Println(form.Name)
for _, child := range(form.Child) {
child.Print()
}
}

type Picture struct {
Name string
}
type Button struct {
Name string
}
type Frame struct {
Name string
Child [] Component
}
type Label struct {
Name string
}
type Linkable struct {
Name string
}
type CheckBox struct {
Name string
}
type TextBox struct {
Name string
}
type PasswordBox struct {
Name string
}

func(pic Picture) Print() {
fmt.Println(pic.Name)
}

func(button Button) Print() {
fmt.Println(button.Name)
}

func(frame Frame) Print() {
fmt.Println(frame.Name)
for _, child := range(frame.Child) {
child.Print()
}
}

func(frame *Frame) Add(child Component) {
frame.Child = append(frame.Child, child)
}

func(label Label) Print() {
fmt.Println(label.Name)
}

func(link Linkable) Print() {
fmt.Println(link.Name)
}

func(checkbox CheckBox) Print() {
fmt.Println(checkbox.Name)
}

func(textbox TextBox) Print() {
fmt.Println(textbox.Name)
}

func(passbox PasswordBox) Print() {
fmt.Println(passbox.Name)
}

func main() {
FormOne := Form{Name:"WINDOW窗口"}
FormOne.Add(Picture{Name: "LOGO图片"})
FormOne.Add(Button{Name: "登录"})
FormOne.Add(Button{Name: "注册"})
FrameOne := Frame{Name: "FRAME1"}
FrameOne.Add(Label{Name: "用户名"})
FrameOne.Add(TextBox{Name: "文本框"})
FrameOne.Add(Label{Name: "密码"})
FrameOne.Add(PasswordBox{Name: "密码框"})
FrameOne.Add(CheckBox{Name: "复选框"})
FrameOne.Add(TextBox{Name: "记住用户名"})
FrameOne.Add(Linkable{Name: "忘记密码"})
FormOne.Add(FrameOne)
FormOne.Print()
}

运行结果:



用户头像

还未添加个人签名 2019.09.13 加入

还未添加个人简介

评论

发布
暂无评论
第三周-作业1