架构师训练营 -week3 命题作业

发布于: 2020 年 06 月 21 日
架构师训练营 -week3 命题作业

本周作业是利用组合模式打印登陆窗口程序以及手写单例模式。

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

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

直接上代码:

package jiketime_homework.week03;
/**
* @author jeffSmile
* @date 2020-06-21 上午 11:40
* @desc
*/
public interface Component {
void print();
}

package jiketime_homework.week03;
/**
* @author jeffSmile
* @date 2020-06-21 上午 11:44
* @desc 元素类组件
*/
public class Element implements Component{
private String name;
public Element(String name){
this.name=name;
}
@Override
public void print() {
System.out.println("loading :" + name);
}
}

package jiketime_homework.week03;
import java.util.ArrayList;
import java.util.List;
/**
* @author jeffSmile
* @date 2020-06-21 上午 11:48
* @desc 容器类组件
*/
public class Container implements Component{
List<Component> components = new ArrayList<>();
private String name;
public Container(String name){
this.name = name;
}
public void addComponent(Component component){
components.add(component);
}
@Override
public void print() {
System.out.println("loading :" + name);
for (Component component: components) {
component.print();
}
}
}

打印程序:

package jiketime_homework.week03;
/**
* @author jeffSmile
* @date 2020-06-21 上午 11:58
* @desc 打印窗口程序
*/
public class PrintProgram {
public static void main(String[] args) {
Container winForm = new Container("winForm");
Component picture = new Element("LOGO PICTURE");
Component loginBtn = new Element("LOGIN BUTTON");
Component regBtn = new Element("REGISTER BUTTON");
Container frame = new Container("FRAME");
winForm.addComponent(picture);
winForm.addComponent(loginBtn);
winForm.addComponent(regBtn);
winForm.addComponent(frame);
Component userLabel = new Element("USERNAME LABEL");
Component passLabel = new Element("PASSWORD LABEL");
Component userCheckBox = new Element("USERNAME checkBox");
Component passCheckBox = new Element("PASSWORD checkBox");
Component rememberCheckBox = new Element("REMEMBER checkBox");
Component rememberUserLabel = new Element("REMEMBER USERNAME LABEL");
Component forgetPWDLabel = new Element("FORGET PASSWORD LABEL");
frame.addComponent(userLabel);
frame.addComponent(passLabel);
frame.addComponent(userCheckBox);
frame.addComponent(passCheckBox);
frame.addComponent(rememberCheckBox);
frame.addComponent(rememberUserLabel);
frame.addComponent(forgetPWDLabel);
winForm.print();
}
}

运行程序打印结果:

loading :winForm
loading :LOGO PICTURE
loading :LOGIN BUTTON
loading :REGISTER BUTTON
loading :FRAME
loading :USERNAME LABEL
loading :PASSWORD LABEL
loading :USERNAME checkBox
loading :PASSWORD checkBox
loading :REMEMBER checkBox
loading :REMEMBER USERNAME LABEL
loading :FORGET PASSWORD LABEL

发布于: 2020 年 06 月 21 日 阅读数: 10
用户头像

Jeff.Smile

关注

努力支撑经历,经历支撑能力! 2018.12.03 加入

追不上BAT的人...

评论

发布
暂无评论
架构师训练营 -week3 命题作业