架构师训练营第三周作业
发布于: 2020 年 06 月 21 日

1. 手写单例模式

组合模式编写程序
IComponent接口:
public interface IComponent {	/**	 * 打印	 */	void print();}
BaseComponent类:
public class BaseComponent implements IComponent {		private String name;		public BaseComponent(String name) {		this.name = name;	}	@Override	public void print() {		System.out.println("print " + getClass().getSimpleName() + "(" + name + ")");	}}
ComponentGroup类:
import java.util.ArrayList;import java.util.Collection;import java.util.List;public class ComponentGroup extends BaseComponent {		private List<IComponent> components = new ArrayList<>();		public ComponentGroup(String name) {		this(name, null);	}		public ComponentGroup(String name, Collection<IComponent> comps) {		super(name);		if (comps != null) {			components.addAll(comps);		}	}		public void addComponent(IComponent comp) {		if (comp != null) {			components.add(comp);		}	}	@Override	public final void print() {		super.print();		components.stream().forEach(IComponent::print);	}}
Button类:
/** * 按钮 */public class Button extends BaseComponent {	public Button(String name) {		super(name);	}}
CheckBox类:
/** * 复选框 */public class CheckBox extends BaseComponent {	public CheckBox(String name) {		super(name);	}}
Frame类:
/** * 框架 */public class Frame extends ComponentGroup {	public Frame(String name) {		super(name);	}}
Label类:
/** * 标签 */public class Label extends BaseComponent {	public Label(String name) {		super(name);	}}
LinkLabel类:
/** * 带链接的标签 */public class LinkLabel extends BaseComponent {	public LinkLabel(String name) {		super(name);	}}
PasswordBox类:
/** * 密码框 */public class PasswordBox extends BaseComponent {	public PasswordBox(String name) {		super(name);	}}
Picture类:
/** * 图片 */public class Picture extends BaseComponent {	public Picture(String name) {		super(name);	}}
TextBox类:
/** * 文本框 */public class TextBox extends BaseComponent {	public TextBox(String name) {		super(name);	}}
WinForm类:
/** * 窗口 */public class WinForm extends ComponentGroup {	public WinForm(String name) {		super(name);	}}
MainClient主客户端类:
public class MainClient {	public static void main(String[] args) {		WinForm window = new WinForm("WINDOW窗口");		window.addComponent(new Picture("LOGO图片"));		window.addComponent(new Button("登录"));		window.addComponent(new Button("注册"));		Frame frame = new Frame("FRAME1");		window.addComponent(frame);		frame.addComponent(new Label("用户名"));		frame.addComponent(new TextBox("文本框"));		frame.addComponent(new Label("密码"));		frame.addComponent(new PasswordBox("密码框"));		frame.addComponent(new CheckBox("复选框"));		frame.addComponent(new Label("记住用户名"));		frame.addComponent(new LinkLabel("忘记密码"));				window.print();//打印	}}
划线
评论
复制
发布于: 2020 年 06 月 21 日阅读数: 56
CATTY
关注
还未添加个人签名 2019.12.29 加入
还未添加个人简介











    
评论