第三周设计作业
发布于: 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();
}
}
复制代码
划线
评论
复制
发布于: 2020 年 12 月 12 日阅读数: 25
cc
关注
还未添加个人签名 2018.03.19 加入
还未添加个人简介
评论