第三周作业

用户头像
倪惠华
关注
发布于: 2020 年 06 月 24 日

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





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



package tests
import (
"container/list"
"fmt"
"testing"
)
type Component interface {
do()
}
type LeafElement struct {
name string
}
func (leafElement LeafElement) do() {
fmt.Println("print " + leafElement.name)
}
type ContainerElement struct {
*list.List
name string
}
func (containerElement ContainerElement) do() {
fmt.Println("print " + containerElement.name)
for e := containerElement.Front(); e != nil; e = e.Next() {
e.Value.(Component).do()
}
}
func (containerElement ContainerElement) addComponent(component Component) {
containerElement.PushBack(component)
}
func TestPrintComponent(t *testing.T) {
window := ContainerElement{
List: list.New(),
name: "WinForm(WINDOW窗口)"}
logo := LeafElement{name: "Picture(LOGO图片)"}
window.addComponent(logo)
loginButton := LeafElement{name: "Button(登录)"}
registerButton := LeafElement{name: "Button(注册)"}
window.addComponent(loginButton)
window.addComponent(registerButton)
frame := ContainerElement{
List: list.New(),
name: "Frame(FRAME1)",
}
userNameLable := LeafElement{name: "Lable(用户名)"}
userNameText := LeafElement{name: "TextBox(文本框)"}
passwordLable := LeafElement{name: "Lable(密码)"}
passwordText := LeafElement{name: "PasswordBox(密码框)"}
checkbox := LeafElement{name: "CheckBox(复选框)"}
rememberUserNameLable := LeafElement{name: "TextBox(记住用户名)"}
forgetPasswordLink := LeafElement{name: "LinkLable(忘记密码)"}
frame.addComponent(userNameLable)
frame.addComponent(userNameText)
frame.addComponent(passwordLable)
frame.addComponent(passwordText)
frame.addComponent(checkbox)
frame.addComponent(rememberUserNameLable)
frame.addComponent(forgetPasswordLink)
window.addComponent(frame)
window.do()
}



//输出
print WinForm(WINDOW窗口)
print Picture(LOGO图片)
print Button(登录)
print Button(注册)
print Frame(FRAME1)
print Lable(用户名)
print TextBox(文本框)
print Lable(密码)
print PasswordBox(密码框)
print CheckBox(复选框)
print TextBox(记住用户名)
print LinkLable(忘记密码)



用户头像

倪惠华

关注

还未添加个人签名 2018.05.08 加入

还未添加个人简介

评论

发布
暂无评论
第三周作业