写点什么

架构师训练营 week 3

用户头像
iLeGeND
关注
发布于: 2020 年 06 月 24 日
架构师训练营 week 3

1 手写单例模式



  1. 组合模式



/**
* 基础接口
*/
public interface BaseComponent {
void print();
}
/**
* 容器模版类 继承专用
*/
@Data
public class Container implements BaseComponent {
List<BaseComponent> list = new ArrayList<>();
String name;
public Container(String name) {
this.name = name;
}
// 多态
public void addComponent(BaseComponent component) {
list.add(component);
}
@Override
public void print() {
System.out.println(name);
list.forEach(BaseComponent::print);
}
}
/**
*
* 节点模版类 继承专用
*/
@Data
public class Node implements BaseComponent {
String name;
public Node(String name){
this.name = name;
}
@Override
public void print() {
System.out.println(name);
}
}
/**
* 下面是具体的容器或者模版的实现
*/
public class WindowsForm extends Container {
public WindowsForm(String name){
super(name);
}
}
public class Frame extends Container {
public Frame(String name) {
super(name);
}
}
public class Picture extends Node {
public Picture(String name){
super(name);
}
}
public class Lable extends Node {
public Lable(String name) {
super(name);
}
}
public class Checkbox extends Node {
public Checkbox(String name){
super(name);
}
}
public class Passwordbox extends Node {
public Passwordbox(String name){
super(name);
}
}
public class Linklabe extends Node {
public Linklabe(String name) {
super(name);
}
}
/**
* 测试方法
*/
public class WinTest {
public static void main(String[] args) {
WindowsForm win = new WindowsForm("WINDOW 窗口");
win.addComponent(new Picture("logo 图片"));
win.addComponent(new Button("登录"));
win.addComponent(new Button("注册"));
Frame frame = new Frame("frame1");
frame.addComponent(new Lable("用户名"));
frame.addComponent(new Testbox("文本框"));
frame.addComponent(new Lable("密码"));
frame.addComponent(new Passwordbox("密码框"));
frame.addComponent(new Checkbox("复选框"));
frame.addComponent(new Testbox("记住用户名"));
frame.addComponent(new Linklabe("忘记密码"));
win.addComponent(frame);
win.print();
}
}
运行结果:
WINDOW 窗口
logo 图片
登录
注册
frame1
用户名
文本框
密码
密码框
复选框
记住用户名
忘记密码



  1. 心得

设计模式得实用场景很重要

充分利用多态

不通是设计模式得区分主要在于他解决什么问题,而不是具体得代码形式。

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

iLeGeND

关注

我一直在你身边 从未走远 2018.02.20 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 week 3