架构师培训 -03 设计模式
发布于: 2020 年 06 月 22 日
1. 手写单例模式代码
请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 用组合设计模式编写程序
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3
2.1类图
2.2输出结果
2.3主要代码
2.3.1组件接口
package com.lm;public interface Component { void print();}
2.3.2抽象类
将组件设置名字代码抽出到这个抽象类中。
package com.lm;public abstract class AbStractComponent implements Component { protected String name; public AbStractComponent(String name) { this.name = name; }}
2.3.3WinForm类
package com.lm;import java.util.ArrayList;import java.util.List;public class WinForm extends AbStractComponent { private List<Component> componentList = new ArrayList<>(); public WinForm(String name) { super(name); } public void addComponent(Component component) { componentList.add(component); } @Override public void print() { System.out.println("WinForm("+this.name+")"); for (Component component : componentList) { component.print(); } }}
2.3.4Button组件
package com.lm;public class Button extends AbStractComponent { public Button(String name) { super(name); } @Override public void print() { System.out.println("Button("+this.name+")"); }}
2.3.5测试代码
package com.lm;import javax.swing.*;public class LoginMain { public static void main(String[] args) { WinForm winForm = new WinForm("WINDOW窗口"); Component logo = new Picture("LOGO图片"); Frame frame = new Frame("FRAME1"); Component userName = new Lable("用户名"); Component userNameText = new TextBox("文本框"); Component password = new Lable("密码"); Component passwordText = new PasswordBox("密码框"); Component checkbox = new CheckBox("复选框"); Component remember = new Lable("记住用户名"); Component forgetPassword = new LinkLable("忘记密码"); Component login = new Button("登录"); Component register = new Button("注册"); frame.addComponent(userName); frame.addComponent(userNameText); frame.addComponent(password); frame.addComponent(passwordText); frame.addComponent(checkbox); frame.addComponent(remember); frame.addComponent(forgetPassword); winForm.addComponent(logo); winForm.addComponent(frame); winForm.addComponent(login); winForm.addComponent(register); winForm.print(); }}
划线
评论
复制
发布于: 2020 年 06 月 22 日阅读数: 54
刘敏
关注
还未添加个人签名 2018.04.25 加入
还未添加个人简介
评论