写点什么

架构师训练营 - 第 3 周作业

用户头像
cafebaby
关注
发布于: 2021 年 01 月 17 日

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

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


1、单例模式


public class TestClass{		private static TestClass singleton=new TestClass();
private TestClass(){}
public TestClass GetInstance() { return singleton; }}
复制代码


2、组合器模式


public interface IComponent{		    String Name {get;set;}    void Print();}
public abstract class ComponentBase:IComponent{ public String Name{get;est;} public void Print() { Console.WriteLine("print "+name); }}
public class Picture:ComponentBase{}public class Button:ComponentBase{}public class Label:ComponentBase{}public class TextBox:ComponentBase{}public class PasswordBox:ComponentBase{}public class CheckBox:ComponentBase{}public class LinkLabel:ComponentBase{}
public class Frame:ComponentBase{ private IList<IComponent> components=new List<IComponent>(); public void Print() { base.Print(); foreach(IComponent component in components) { component.Print(); } } public void AddComponent(IComponent component) { components.Add(component); }}
public class WinForm:Frame{}
public class TestClass{ public static void Main() { var winFrom=new WinForm(){ Name="WinForm(Windows窗口)"}; var logo=new Picture(){Name="Picture(LOGO图片)"}; var btnLogin=new Button(){Name="Button(登录)"}; var btnRegister=new Button(){Name="Button(注册)"}; var frame=new Frame(){ Name="Fram(FRAME1)"}; var lblUserName=new Label(){Name="Label(用户名)"}; var txtUserName=new TextBox(){Name="TextBox(文本框)"}; var lblPwd=new Label(){Name="Label(密码)"}; var txtPwd=new PasswordBox{Name="Passwordbox(密码框)"}; var chkPwd=new CheckBox(){Name="CheckBox(复选框)"}; var txtRemeberUserName=new TextBox{Name="TextBox(记住用户名)"}; var lnkPwd=new LinkLabel{Name="LinkLable(忘记秘密)"}; //构建frame frame.AddComponent(lblUserName); frame.AddComponent(txtUserName); frame.AddComponent(lblPwd); frame.AddComponent(txtPwd); frame.AddComponent(chkPwd); frame.AddComponent(txtRemeberUserName); frame.AddComponent(lnkPwd); //构建winform winFrom.AddComponent(logo); winFrom.AddComponent(frame); winFrom.AddComponent(btnLogin); winFrom.AddComponent(btnRegister); //打印输出 winFrom.Print(); Console.ReadLine(); }}
复制代码


用户头像

cafebaby

关注

还未添加个人签名 2020.11.27 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营- 第3周作业