架构师训练营 - 第 3 周作业
发布于: 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();
}
}
复制代码
划线
评论
复制
发布于: 2021 年 01 月 17 日阅读数: 15
cafebaby
关注
还未添加个人签名 2020.11.27 加入
还未添加个人简介
评论