设计模式 - 单例模式和组合模式

发布于: 2020 年 06 月 24 日

手写单例模式

单例模式(Singleton Pattern)

指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式属于创建型模式。单例模式分为懒汉式和恶汉式(外部调用的时候才加载)

下面这个手写的是懒汉式的单例模式

组合模式(Composite Pattern)

通过将单个对象(叶子节点 )和组合对象(树枝节点)用相同的接口进行表示,使得在对单个对象和组合对象的使用具有一致性,属于结构型模式

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

树枝节点:WinForm(window窗口)

树枝节点:Frame(Frame1) Picture(logo图片) Button(登录) Button(注册)

叶子节点1:Lable(用户名) TextBox(文本框) Lable(密码) PasswordBox(密码框) CheckBox(复选框) TextBox(记住用户名) LinkLable(忘记密码)

设计模式图:

组合体现:

public static void main(String[] args){
WinComposite frame1 = new WinComposite("Frame(Frame1)",2);
WinComponent picture = new WinLeaf("Picture(logo图片)");
WinComponent button_login = new WinLeaf("Button(登录)");
WinComponent button_register = new WinLeaf("Button(注册)");
WinComponent winForm = new WinComposite("WinForm(window窗口)",1);
WinComponent lable_loginName = new WinLeaf("Lable(用户名) ");
WinComponent textBox_loginName = new WinLeaf("TextBox(文本框)");
WinComponent lable_password = new WinLeaf("Lable(密码)");
WinComponent textBox_password = new WinLeaf("PasswordBox(密码框)");
WinComponent checkBox = new WinLeaf("CheckBox(复选框)");
WinComponent textBox_remember = new WinLeaf("TextBox(记住用户名)");
WinComponent link_password = new WinLeaf("LinkLable(忘记密码)");
frame1.add(lable_loginName);
frame1.add(textBox_loginName);
frame1.add(lable_password);
frame1.add(textBox_password);
frame1.add(checkBox);
frame1.add(textBox_remember);
frame1.add(link_password);
winForm.add(frame1);
winForm.add(picture);
winForm.add(button_login);
winForm.add(button_register);
winForm.show();
}

打印结果如下

发布于: 2020 年 06 月 24 日 阅读数: 12
用户头像

Bruce Lee

关注

还未添加个人签名 2017.12.12 加入

还未添加个人简介

评论

发布
暂无评论
设计模式-单例模式和组合模式