第三周作业

用户头像
熊桂平
关注
发布于: 2020 年 10 月 04 日

1 请在草稿纸上手写一个单例模式的实现代码。

单例模式

2代码编写

代码采用组合方式实现,Client为客户端调用类,IElement为公共抽象接口,Element为所有组件抽象父类,Container为可以容纳子控件的类,WinForm和Frame集成自Container,其他组件集成自Element

组合模式结构图

实现代码:



package test;
import java.util.ArrayList;
public class Client
{
public static void main(String[] args)
{
IElement winform = new WinForm("WINDOW窗口");
winform.add(new Picture("LOGO图片"));
winform.add(new Button("登录"));
winform.add(new Button("注册"));
IElement frame = new Frame("FRAME1");
frame.add(new Lable("用户名"));
frame.add(new TextBox("文本框"));
frame.add(new Lable("密码"));
frame.add(new PasswordBox("密码框"));
frame.add(new CheckBox("复选框"));
frame.add(new TextBox("记住用户名"));
frame.add(new LinkLable("忘记密码"));
winform.add(frame);
winform.print();
}
}
//接口
public interface IElement
{
public void print();
}
//抽象父类
abstract class Element implements IElement
{
private String name;
private String text;
public Element(String name, String text)
{
this.name = name;
this.text = text;
}
public void print()
{
System.out.println(String.format("print %s(%s)\n", name, text));
}
}
//抽象容器类
abstract class Container extends Element
{
private ArrayList<IElement> fields=new ArrayList<IElement>();
public void add(IElement e)
{
fields.add(e);
}
public void print()
{
super.print();
for(IElement e:fields)
{
e.print();
}
}
}
//组件实现类,WinForm和Frame集成自Contriner容器类
class WinForm extends Container
{
public WinForm(String text)
{
super(WinForm.class.getSimpleName(), text);
}
}
class Picture extends Element
{
public Picture(String text)
{
super(Picture.class.getSimpleName(), text);
}
}
class Button extends Element
{
public Button(String text)
{
super(Button.class.getSimpleName(), text);
}
}
class Frame extends Container
{
public Frame(String text)
{
super(Frame.class.getSimpleName(), text);
}
}
class Lable extends Element
{
public Lable(String text)
{
super(Lable.class.getSimpleName(), text);
}
}
class TextBox extends Element
{
public TextBox(String text)
{
super(TextBox.class.getSimpleName(), text);
}
}
class PasswordBox extends Element
{
public PasswordBox(String text)
{
super(PasswordBox.class.getSimpleName(), text);
}
}
class CheckBox extends Element
{
public CheckBox(String text)
{
super(CheckBox.class.getSimpleName(), text);
}
}
class TextBox extends Element
{
public TextBox(String text)
{
super(TextBox.class.getSimpleName(), text);
}
}
class LinkLable extends Element
{
public LinkLable(String text)
{
super(LinkLable.class.getSimpleName(), text);
}
}



用户头像

熊桂平

关注

还未添加个人签名 2020.09.14 加入

还未添加个人简介

评论

发布
暂无评论
第三周作业