第三周作业

发布于: 21 小时前

1.手写单例模式

2.组合模式应用

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

代码实现:

public interface Drawable {
void draw();
}
public interface CombineDrawable extends Drawable{
/**
* 容器组件可以注册一个组件
*/
CombineDrawable register(Drawable drawable);
}
/**
*
*容器组件实现
*/
public class ContainerControl implements CombineDrawable {
@Override
public ContainerControl register(Drawable drawable) {
this.registerdContorls.add(drawable);
return this;
}
@Override
public void draw() {
//先绘制容器自己
this.self.draw();
// 子控件遍历绘制
registerdContorls.forEach(Drawable::draw);
}
private Drawable self;
private List<Drawable> registerdContorls = new ArrayList<>();
private String name;
private ContainerControl(Drawable self, String name) {
this.self = self;
this.name = name;
}
public static ContainerControl createContainner(Drawable self, String name) {
return new ContainerControl(self, name);
}
}
public class DrawDemo {
public static void main(String[] args) {
// 先绘制整个窗口, 父容器
ContainerControl.createContainner(() -> System.out.println("Draw WinForm"), "WinFrom")
.register(() -> System.out.println("Draw Logo"))
.register(() -> System.out.println("Draw Button(登录)"))
.register(() -> System.out.println("Draw Button(注册)"))
.register(ContainerControl.createContainner(() -> System.out.println("Draw Frame1"), "Frame") //Frame1又是个容器
.register(() -> System.out.println("Draw label 用户名"))
.register(() -> System.out.println("Draw TextBox"))
.register(() -> System.out.println("Draw PassWordBox"))
.register(() -> System.out.println("Draw CheckBox"))
.register(() -> System.out.println("Draw TextBox 记住用户名"))
.register(() -> System.out.println("Draw LinkLabel 忘记密码")))
.draw(); //开始绘制
}
}

用户头像

毛叫

关注

还未添加个人签名 2018.12.25 加入

还未添加个人简介

评论

发布
暂无评论
第三周作业