第三周作业
发布于: 2020 年 06 月 24 日
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(); //开始绘制 }}
划线
评论
复制
发布于: 2020 年 06 月 24 日阅读数: 52
毛叫
关注
还未添加个人签名 2018.12.25 加入
还未添加个人简介
评论