写点什么

第三周作业

用户头像
Geek_ac4080
关注
发布于: 2020 年 10 月 08 日



作业一:

请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。

分为饿汉式和懒汉式

作业二:

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



public interface Component {
void draw();
}



public class BaseComponent implements Component {
protected String name;
protected String type;
@Override
public void draw() {
System.out.println("print "+ type + "(" + name + ")");
}
}



import java.util.ArrayList;
import java.util.List;
/**
* 容器
*/
public class Container extends BaseComponent {
private List<BaseComponent> components = new ArrayList<BaseComponent>();
public Container(String name, String type) {
this.name = name;
this.type = type;
}
public List<BaseComponent> getChild(){
return components;
}
public void addComponent(BaseComponent component){
components.add(component);
}
@Override
public void draw() {
super.draw();
for(BaseComponent component : components){
component.draw();
}
}
}



/**
* 叶子节点
*/
public class Leaf extends BaseComponent{
public Leaf(String name, String type) {
this.name = name;
this.type = type;
}
}



public class PrintWinForm {
public static void main(String[] args){
Container winForm = new Container("WINDOW窗口", "WinForm");
winForm.addComponent(new Leaf("LOGO图片", "Picture"));
winForm.addComponent(new Leaf("登录", "Button"));
winForm.addComponent(new Leaf("注册", "Button"));
Container frame = new Container("FRAME1", "Frame");
winForm.addComponent(frame);
frame.addComponent(new Leaf("用户名", "Label"));
frame.addComponent(new Leaf("文本框", "TextBox"));
frame.addComponent(new Leaf("密码", "Label"));
frame.addComponent(new Leaf("密码框", "PasswordBox"));
frame.addComponent(new Leaf("复选框", "CheckBox"));
frame.addComponent(new Leaf("记住用户名", "TextBox"));
frame.addComponent(new Leaf("忘记密码", "LinkLabel"));
winForm.draw();
}
}



最终打印输出结果:



用户头像

Geek_ac4080

关注

还未添加个人签名 2019.05.09 加入

还未添加个人简介

评论

发布
暂无评论
第三周作业