架构师训练营第三周作业

用户头像
张明森
关注
发布于: 2020 年 06 月 21 日

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





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







/**
* 元素
*/
public interface Element {
/**
* 打印
*/
void print();
/**
* 打印
* @param prefix 前缀
*/
void print(String prefix);
}
public abstract class AbstractElement implements Element {
private String text;
protected AbstractElement(){
}
public AbstractElement(String text){
this.text=text;
}
public void print() {
System.out.println(this.getType()+"("+this.text+")");
}
public void print(String prefix) {
System.out.println(prefix+this.getType()+"("+this.text+")");
}
public abstract String getType();
}
/**
* Button
*/
public class Button extends AbstractElement {
public Button(String text){
super(text);
}
@Override
public String getType() {
return "Button";
}
}
/**
* CheckBox
*/
public class CheckBox extends AbstractElement {
public CheckBox(String text){
super(text);
}
@Override
public String getType() {
return "CheckBox";
}
}
/**
* Label
*/
public class Label extends AbstractElement {
public Label(String text){
super(text);
}
@Override
public String getType() {
return "Label";
}
}
/**
* LinkLabel
*/
public class LinkLabel extends AbstractElement {
public LinkLabel(String text){
super(text);
}
@Override
public String getType() {
return "LinkLabel";
}
}
/**
* PasswordBox
*/
public class PasswordBox extends AbstractElement {
public PasswordBox(String text){
super(text);
}
@Override
public String getType() {
return "PasswordBox";
}
}
/**
* 图片
*/
public class Picture extends AbstractElement {
public Picture(String text){
super(text);
}
@Override
public String getType() {
return "Picture";
}
}
/**
* TextBox
*/
public class TextBox extends AbstractElement {
public TextBox(String text){
super(text);
}
@Override
public String getType() {
return "TextBox";
}
}
/**
* 容器元素
*/
public abstract class Container extends AbstractElement {
private List<Element> elements=new ArrayList<Element>();
protected String prefix=" ";
protected Container(){
}
public Container(String text){
super(text);
}
@Override
public void print() {
super.print();
for(Element element:elements){
element.print(prefix);
}
}
@Override
public void print(String prefix) {
super.print(prefix);
for(Element element:elements){
element.print(prefix+this.prefix);
}
}
public void addEle(Element element){
this.elements.add(element);
}
public void removeEle(Element element){
this.elements.remove(element);
}
}
/**
* Frame
*/
public class Frame extends Container {
public Frame(String text){
super(text);
}
@Override
public String getType() {
return "Frame";
}
}
/**
* WinForm
*/
public class WinForm extends Container {
public WinForm(String text) {
super(text);
}
@Override
public String getType() {
return "WinForm";
}
}



结果

WinForm(WINDOW窗体)
Picture(LOGO图片)
Button(登录)
Button(注册)
Frame(FRAME1)
Label(用户名)
TextBox(文本框)
Label(密码)
PasswordBox(密码框)
CheckBox(复选框)
TextBox(记住用户名)
LinkLabel(忘记密码)



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

张明森

关注

还未添加个人签名 2017.10.16 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第三周作业