写点什么

架构师训练营第三周作业

用户头像
我是谁
关注
发布于: 2020 年 10 月 04 日

作业一

1、

2、

import java.util.ArrayList;
public abstract class Component { protected String name; protected ArrayList<Component> lstComponets;
public Component(String name) { this.name = name; }
public void add(Component component){ this.lstComponets.add(component); }
public void remove(Component component) { this.lstComponets.remove(component); }
public abstract void print();}
public class Winform extends Component { public Winform(String name) { super(name); }
@Override public void print() { System.out.println("print WinForm("+this.name+")"); for (Component child : lstComponets) { child.print(); } }}
public class Picture extends Component { public Picture(String name) { super(name); }
@Override public void print() { System.out.println("print WinForm("+this.name+")"); for (Component child : lstComponets) { child.print(); } }}
public class Button extends Component { public Button(String name) { super(name); }
@Override public void print() { System.out.println("print Button("+this.name+")"); for (Component child : lstComponets) { child.print(); } }}
public class Frame extends Component { public Frame(String name) { super(name); }
@Override public void print() { System.out.println("print Frame("+this.name+")"); for (Component child : lstComponets) { child.print(); } }}
public class Label extends Component { public Label(String name) { super(name); }
@Override public void print() { System.out.println("print Label("+this.name+")"); for (Component child : lstComponets) { child.print(); } }}
public class TextBox extends Component { public TextBox(String name) { super(name); }
@Override public void print() { System.out.println("print TextBox("+this.name+")"); for (Component child : lstComponets) { child.print(); } }}
public class PasswordBox extends Component { public PasswordBox(String name) { super(name); }
@Override public void print() { System.out.println("print PasswordBox("+this.name+")"); for (Component child : lstComponets) { child.print(); } }}
public class CheckBox extends Component { public CheckBox(String name) { super(name); }
@Override public void print() { System.out.println("print CheckBox("+this.name+")"); for (Component child : lstComponets) { child.print(); } }}
public class LinkLabel extends Component { public LinkLabel(String name) { super(name); }
@Override public void print() { System.out.println("print LinkLabel(" + this.name + ")"); for (Component child : lstComponets) { child.print(); } }}
public class Client { public static void main(String[] args) { Component winform = new Winform("WINDOWS窗口"); winform.add(new Picture("LOGO")); Component frame = new Frame("FRAME"); frame.add(new Label("用户名")); frame.add(new TextBox("文本框")); frame.add(new Label("密码")); frame.add(new PasswordBox("密码框")); frame.add(new CheckBox("复选框")); frame.add(new TextBox("记住用户名")); frame.add(new LinkLabel("忘记密码")); winform.add(frame); winform.add(new Button("登录")); winform.add(new Button("注册")); winform.print(); }
}
复制代码

作业二

本周主要对常用设计模式结合实例进行了学习。之前虽然使用面向对象语言,但任然面向过程的写法较多,每个类只是对相关的方法进行了归集,每个方法有一长串的参数以及一堆的 ifelse,导致需求变更时不断的修改代码。经过一段时间后,不但接手的人,包括自己都无法看懂代码和修改代码。也经常出现牵一发动全身的情况,bug 不断。本周的设计模式也是对第二周设计原则的一个很好的实践。下步需要逐步重构自己之前的代码。


一个设计模式需要记住的四个部分:

  • 模式的名称 - 由少量的字组成的名称,有助于我们表达我们的设计。

  • 待解问题 - 描述了何时需要运用这种模式,以及运用模式的环境(上下文)。

  • 解决方案 - 描述了组成设计的元素(类和对象)、它们的关系、职责以及合作。但这种解

决方案是抽象的,它不代表具体的实现。

  • 结论 - 运用这种方案所带来的利和弊。主要是指它对系统的弹性、扩展性、和可移植性的

影响。


工厂模式:创建类似但不同对象

单例模式:全系统就一个对象

适配器模式:将一个接口转换为另一个接口

装饰器模式:自己包装自己,可以用接口、抽象类,甚至是一个普通的类也可以实现

模板模式:按固定的过程实现

策略模式:按条件实现不同的方法


用户头像

我是谁

关注

还未添加个人签名 2017.12.04 加入

十五年电子政务老兵

评论

发布
暂无评论
架构师训练营第三周作业