写点什么

架构师培训 -03 设计模式

用户头像
刘敏
关注
发布于: 2020 年 06 月 22 日

1. 手写单例模式代码

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



2. 用组合设计模式编写程序

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





2.1类图



2.2输出结果

2.3主要代码

2.3.1组件接口

package com.lm;

public interface Component {
void print();
}


2.3.2抽象类

将组件设置名字代码抽出到这个抽象类中。

package com.lm;

public abstract class AbStractComponent implements Component {
protected String name;
public AbStractComponent(String name) {
this.name = name;
}
}




2.3.3WinForm类

package com.lm;

import java.util.ArrayList;
import java.util.List;

public class WinForm extends AbStractComponent {
private List<Component> componentList = new ArrayList<>();

public WinForm(String name) {
super(name);
}

public void addComponent(Component component) {
componentList.add(component);
}


@Override
public void print() {
System.out.println("WinForm("+this.name+")");
for (Component component : componentList) {
component.print();
}
}
}


2.3.4Button组件

package com.lm;

public class Button extends AbStractComponent {
public Button(String name) {
super(name);
}

@Override
public void print() {
System.out.println("Button("+this.name+")");
}
}


2.3.5测试代码

package com.lm;

import javax.swing.*;

public class LoginMain {
public static void main(String[] args) {
WinForm winForm = new WinForm("WINDOW窗口");

Component logo = new Picture("LOGO图片");

Frame frame = new Frame("FRAME1");
Component userName = new Lable("用户名");
Component userNameText = new TextBox("文本框");
Component password = new Lable("密码");
Component passwordText = new PasswordBox("密码框");
Component checkbox = new CheckBox("复选框");
Component remember = new Lable("记住用户名");
Component forgetPassword = new LinkLable("忘记密码");

Component login = new Button("登录");
Component register = new Button("注册");

frame.addComponent(userName);
frame.addComponent(userNameText);
frame.addComponent(password);
frame.addComponent(passwordText);
frame.addComponent(checkbox);
frame.addComponent(remember);
frame.addComponent(forgetPassword);

winForm.addComponent(logo);
winForm.addComponent(frame);
winForm.addComponent(login);
winForm.addComponent(register);

winForm.print();
}
}




用户头像

刘敏

关注

还未添加个人签名 2018.04.25 加入

还未添加个人简介

评论

发布
暂无评论
架构师培训 -03 设计模式