第三章 课后作业

发布于: 21 小时前

作业1:

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

单例模式(Singleton Pattern)顾名思义就是该类有且只有一个实例,并且对外提供可以访问该实例的方法,在23中设计模式中属于创建型模式,它提供了一种创建对象的最佳方式。

单例模式的特点:

  • 单例模式类的构造方法的修饰符为private,即正常情况下不对外提供创建实例的能力

  • 单例模式需要定义一个静态的实例变量,该变量作为应用中的唯一实例存在

  • 单例模式需要对外提供静态访问实例变量的方法

(拍照提交作业 )

作业2:

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

package com.service.app;
import java.util.ArrayList;
import java.util.List;
public class CompositteDemo {
public interface Component {
void show();
}
public static abstract class Leaf implements Component {
private String name;
public Leaf(String name) {
this.name = name;
}
@Override
public void show() {
System.out.println(this.getClass().getSimpleName() + "(" + this.name + ")");
}
}
public static abstract class Container implements Component {
private String name;
private List<Component> list = new ArrayList<>();
public Container(String name) {
this.name = name;
}
public void add(Component operation) {
list.add(operation);
}
@Override
public void show() {
System.out.println(this.getClass().getSimpleName() + "(" + this.name + ")");
for (Component o : list) {
o.show();
}
}
}
public static class Picture extends Leaf {
public Picture(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static class Button extends Leaf {
public Button(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static class Lable extends Leaf {
public Lable(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static class CheckBox extends Leaf {
public CheckBox(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static class PasswordBox extends Leaf {
public PasswordBox(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static class LinkLable extends Leaf {
public LinkLable(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static class TextBox extends Leaf {
public TextBox(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static class Frame extends Container {
public Frame(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static class WinForm extends Container {
public WinForm(String name) {
super(name);
}
@Override
public void show() {
super.show();
}
}
public static void main(String[] args) {
WinForm winForm = new WinForm("WINDOW窗口");
winForm.add(new Picture("LOGO图片"));
Frame 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 Lable("忘记密码"));
winForm.add(frame);
winForm.add(new Button("登录"));
winForm.add(new Button("注册"));
winForm.show();
}
}

用户头像

姜 某某

关注

还未添加个人签名 2019.05.09 加入

还未添加个人简介

评论

发布
暂无评论
第三章 课后作业