第三周作业一
发布于: 2020 年 06 月 24 日
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
/** * 窗口组件接口 */public interface Form { /** * 绘制组件 */ public void draw();}/** * 窗口套件基类 */public abstract class FormSuit implements Form { /** * 组件名称 */ protected final String name; /** * @param name 组件名称 */ public FormSuit(String name) { super(); this.name = name; } /** * 窗口组件列表 */ protected List<Form> forms = new ArrayList<>(); @Override public void draw() { System.out.println("print "+this.getClass().getSimpleName()+"("+name+")"); for (int i = 0; i < forms.size(); i++) { forms.get(i).draw(); } } /** * 添加子组件 * @param form 窗口组件 */ public void addForm(Form form) { forms.add(form); }}/** * 窗口部件基类 */public abstract class FormCase implements Form { /** * 形状名称 */ protected final String name; @Override public void draw() { System.out.println("print "+this.getClass().getSimpleName()+"("+name+")"); } /** * @param name */ public FormCase(String name) { super(); this.name = name; }}/** * 窗口组件 */public class WinForm extends FormSuit { /** * @param name 窗口名称 */ public WinForm(String name) { super(name); }}/** * 图片组件 */public class Picture extends FormCase { /** * @param name 图片名称 */ public Picture(String name) { super(name); }}/** * 按钮组件 */public class Button extends FormCase { /** * @param name 按钮名称 */ public Button(String name) { super(name); }}/** * 表单组件 */public class Frame extends FormSuit { /** * @param name 表单名称 */ public Frame(String name) { super(name); }}/** * 标号组件 */public class Lable extends FormCase { /** * @param name 标号名称 */ public Lable(String name) { super(name); }}/** * 文本框组件 */public class TextBox extends FormCase { /** * @param name 文本框名称 */ public TextBox(String name) { super(name); }}/** * 密码框组件 */public class PasswordBox extends FormCase { /** * @param name 密码框名称 */ public PasswordBox(String name) { super(name); }}/** * 复选框组件 */public class CheckBox extends FormCase { /** * @param name 复选框名称 */ public CheckBox(String name) { super(name); }}/** * 链接标号组件 */public class LinkLable extends FormCase { /** * @param name 链接标号组件名称 */ public LinkLable(String name) { super(name); }}
运行结果:
print WinForm(WINDOW窗口)print Picture(LOGO图片)print Button(登录)print Button(注册)print Frame(FRAME1)print Lable(用户名)print TextBox(文本框)print Lable(密码)print PasswordBox(密码框)print CheckBox(复选框)print TextBox(记住用户名)print LinkLable(忘记密码)
划线
评论
复制
发布于: 2020 年 06 月 24 日 阅读数: 29
安阳
关注
还未添加个人签名 2020.01.04 加入
还未添加个人简介
评论