代码重构练习三
发布于: 2020 年 06 月 22 日
一、手写单例模式
二、组合模式
1、定义公共的接口规范--也可以为抽象类
public interface Component { void print(); void add(Component component);}
2、定义树的根节点 -- 实现接口规范
public class RootNode implements Component { private List<Component> childComponents = new ArrayList<Component>(); public RootNode(String name) { this.name = name; } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void print() { System.out.println(name); if(this.childComponents != null && this.childComponents.size() > 0){ childComponents.stream().forEach(child ->{ child.print(); }); } } @Override public void add(Component component) { childComponents.add(component); }}
3、定义叶子节点 -- 叶子节点的实现
public class LeafNode implements Component { private String name; public LeafNode(String name) { this.name = name; } @Override public void print() { System.out.println(name); } @Override public void add(Component component) { }}
4、客户端
public class Client { public static void main(String[] args) { Component root = new RootNode("WINDOW窗口"); root.add(new LeafNode("LOGO图片")); root.add(new LeafNode("登录")); root.add(new LeafNode("注册")); Component frameNode = new RootNode("FRAME1"); frameNode.add(new LeafNode("用户名")); frameNode.add(new LeafNode("文本框")); frameNode.add(new LeafNode("密码")); frameNode.add(new LeafNode("密码框")); frameNode.add(new LeafNode("复选框")); frameNode.add(new LeafNode("记住用户名")); frameNode.add(new LeafNode("忘记密码")); root.add(frameNode); root.print(); }}
5、输出结果
WINDOW窗口LOGO图片登录注册FRAME1用户名文本框密码密码框复选框记住用户名忘记密码
划线
评论
复制
发布于: 2020 年 06 月 22 日阅读数: 44
李广富
关注
还未添加个人签名 2019.11.12 加入
还未添加个人简介
评论