第 3 周作业
发布于: 2020 年 11 月 08 日
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
声明接口,每个组件定义Text和Tag属性,最近递归打印输出如图所示内容。
记事本编辑,大致代码(.net)如下:
public interface IDisposable{ void Dispose();}public class Component : IDisposable{ ...}public class Control : Component, IDisposable{ public string Text{ get; set;} public string Tag{ get; set;} public ControlCollection Controls { get; } ...}public class WinForm : Control{}public class Picture : Control{}public class Button : Control{}public class Frame : Control{}public class Lable : Control{}public class LinkLabel : Label{}public class TextBox : Control{}public class PasswordBox : Control{}public class CheckBox : Control{}static class Program{ static void Main() { ... Application.Run(new LoginForm()); }} public partial class LoginForm : Form{ private void InitializeComponent() { Picture logo = new Picture(); logo.Tag = "LOGO图片"; Button login = new Button(); login.Text = "登录"; login.Tag = "登录"; Button register = new Button(); register.Text = "注册"; register.Tag = "注册"; Frame frame = new Frame(); frame.Text = "Frame1"; Label nameLabel = new Label(); nameLabel.Text = "用户名"; nameLabel.Tag = "用户名"; TextBox nameTextBox = new TextBox(); nameTextBox.Tag = "文本框"; Label passLabel = new Label(); passLabel.Text = "密码"; passLabel.Tag = "密码"; PasswordBox passTextBox = new PasswordBox(); passTextBox.Tag = "密码框"; CheckBox rememberUserName = new CheckBox(); rememberUserName.Tag = "记住用户名"; LinkLabel forgetPass = new LinkLabel(); forgetPass.Tag = "忘记密码"; frame.Controls.Add(nameLabel); frame.Controls.Add(nameTextBox); frame.Controls.Add(passLabel); frame.Controls.Add(passTextBox); frame.Controls.Add(rememberUserName); frame.Controls.Add(forgetPass); this.Controls.Add(logo); this.Controls.Add(login); this.Controls.Add(register); this.Controls.Add(frame); this.Tag = "WINDOWS窗口"; } private void PrintControls() { PrintControls(this); } private void PrintControls(Control control) { Console.WriteLine(string.Format("print {0}({1})", control.GetType().Name, control.Tag)); // loop child controls foreach(Control childControl in control.Controls) { PrintControls(childControl); } } }
划线
评论
复制
发布于: 2020 年 11 月 08 日阅读数: 30
Steven
关注
还未添加个人签名 2008.07.18 加入
还未添加个人简介
评论