组合模式

发布于: 2020 年 06 月 24 日
使用组合模式实现一个简单窗口的组件打印功能

采用了lambda的方式实现不同的组件,减少很多无意义类的创建。

public interface WindowComponentPrinter {
void print();
}
public class WindowComponentNonLeafDemo implements WindowComponentPrinter {
private List<WindowComponentPrinter> components;
public void addComponent(WindowComponentPrinter windowComponentPrinter) {
if (Objects.isNull(components)) {
components = new ArrayList<>();
}
components.add(windowComponentPrinter);
}
@Override
public void print() {
components.forEach(WindowComponentPrinter::print);
}
public static void main(String[] args) {
WindowComponentNonLeafDemo frame = new WindowComponentNonLeafDemo();
frame.addComponent(() -> System.out.println("print Frame(FRAME1)"));
frame.addComponent(() -> System.out.println("print Lable(用户名)"));
frame.addComponent(() -> System.out.println("print TextBox(文本框)"));
frame.addComponent(() -> System.out.println("print Lable(密码)"));
frame.addComponent(() -> System.out.println("print PasswordBox(密码框)"));
frame.addComponent(() -> System.out.println("print CheckBox(复选框)"));
frame.addComponent(() -> System.out.println("print TextBox(记住用户名)"));
frame.addComponent(() -> System.out.println("print LinkLable(忘记密码)"));
WindowComponentNonLeafDemo mainWindow = new WindowComponentNonLeafDemo();
mainWindow.addComponent(() -> System.out.println("print WinForm(WINDOWS窗口)"));
mainWindow.addComponent(() -> System.out.println("print Picture(LOGO图片)"));
mainWindow.addComponent(() -> System.out.println("print Button(登陆)"));
mainWindow.addComponent(() -> System.out.println("print Button(注册)"));
mainWindow.addComponent(frame::print);
mainWindow.print();
}
}
手写实现一个单例模式

这是一个基于饿汉的单例模式。在类的初始化时候直接生成对应的单例对象。

用户头像

Jeff

关注

还未添加个人签名 2017.11.30 加入

还未添加个人简介

评论

发布
暂无评论
组合模式