写点什么

单例模式及组合模式

发布于: 2020 年 06 月 24 日
  • 手写单例



  • 组合模式

请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图



程序:

VisualComponentI.java

package components;
public interface VisualComponentI {
void addPart(VisualComponentI part);
void removePart(VisualComponentI part);
void print();
}

WinForm.java

package components;
import java.util.ArrayList;
import java.util.List;
public class WinForm implements VisualComponentI {
private List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
private String msg = "print WinForm(WINDOW窗口)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
public static void main(String[] args) {
VisualComponentI frame = new Frame();
frame.addPart(new UsernameLabel());
frame.addPart(new UserNameTextBox());
frame.addPart(new PwdLabel());
frame.addPart(new PwdBox());
frame.addPart(new CheckBox());
frame.addPart(new RemainUserNameTextBox());
frame.addPart(new LinkLable());
VisualComponentI winForm = new WinForm();
winForm.addPart(new Picture());
winForm.addPart(new LoginButton());
winForm.addPart(new RegistButton());
winForm.addPart(frame);
winForm.print();
}
}
class Picture implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print Picture(LOGO图片)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class LoginButton implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print Button(登录)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class RegistButton implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print Button(注册)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class Frame implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print Frame(FRAME1)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class UsernameLabel implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print Label(用户名)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class UserNameTextBox implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print TextBox(文本框)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class PwdLabel implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print Label(密码)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class PwdBox implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print PasswordBox(密码框)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class CheckBox implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print CheckBox(复选框)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class RemainUserNameTextBox implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print TextBox(记住用户名)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}
class LinkLable implements VisualComponentI {
List<VisualComponentI> listParts = new ArrayList<VisualComponentI>();
String msg = "print LinkLabel(忘记密码)";
@Override
public void addPart(VisualComponentI part) {
listParts.add(part);
};
@Override
public void removePart(VisualComponentI part) {
listParts.remove(part);
}
@Override
public void print() {
System.out.println(msg);
for (VisualComponentI part : listParts) {
part.print();
}
};
}



结果:



用户头像

还未添加个人签名 2020.04.13 加入

还未添加个人简介

评论

发布
暂无评论
单例模式及组合模式