写点什么

第三周设计作业

用户头像
cc
关注
发布于: 2020 年 12 月 12 日

1.请在草稿纸上手写一个单例模式的实现代码。


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


【组合模式类图】

【Component:接口类,抽象桌面元素为统一组件,主要包含容器类和子元素类】

package com.gaoyong.jiagoushi.draw;
/** * 通用桌面组件 */public interface Component { public void print();}
复制代码


【Container:容器类,如 WINDOW 窗口、FRAME1,额外定义了 elements,用来添加 Element 对象】

package com.gaoyong.jiagoushi.draw.impl;
import com.gaoyong.jiagoushi.draw.Component;
import java.util.ArrayList;import java.util.List;
/** * 容器 */public class Container implements Component { private String name; private List<Component> elements=new ArrayList<Component>();
public Container(String name){ this.name =name; }
public void addElement(Component component){ elements.add(component); }
@Override public void print() { System.out.println(name); for (Component component : elements){ component.print(); }
}}
复制代码

【Element:子元素类(叶子节点),如 登录、注册等】

package com.gaoyong.jiagoushi.draw.impl;
import com.gaoyong.jiagoushi.draw.Component;
/** * 桌面元素子类 */public class Element implements Component { private String name;
public Element(String name){ this.name =name; }
@Override public void print() { System.out.println(name); }}
复制代码

【DrawDesktop:程序入口,按要求绘制桌面元素】

package com.gaoyong.jiagoushi.draw;
import com.gaoyong.jiagoushi.draw.impl.Container;import com.gaoyong.jiagoushi.draw.impl.Element;
import java.awt.*;
public class DrawDesktop { public static void main(String[] args) { /* 绘制WinForm */ Container winForm = new Container("WINDOW窗口"); Element picture = new Element("LOGO图片"); Element logoinBtn = new Element("登录"); Element registerBtn = new Element("注册"); Container frame = new Container("FRAME1"); winForm.addElement(picture); winForm.addElement(logoinBtn); winForm.addElement(registerBtn); winForm.addElement(frame); /* 绘制FRAME1 */ Element userNameLable = new Element("用户名"); Element userNameTxt = new Element("文本框"); Element passwordLable = new Element("密码"); Element passwordTxt = new Element("密码框"); Element rememberCheckBox = new Element("复选框"); Element rememberTxt = new Element("记住用户名"); Element forgetLink = new Element("忘记密码"); frame.addElement(userNameLable); frame.addElement(userNameTxt); frame.addElement(passwordLable); frame.addElement(passwordTxt); frame.addElement(rememberCheckBox); frame.addElement(rememberTxt); frame.addElement(forgetLink); //绘制桌面窗口 winForm.print(); }}
复制代码


用户头像

cc

关注

还未添加个人签名 2018.03.19 加入

还未添加个人简介

评论

发布
暂无评论
第三周设计作业