写点什么

架构师训练营作业 (第三周)

用户头像
默默
关注
发布于: 2020 年 06 月 24 日

作业一

请在草稿纸上手写一个单例模式的实现代码(拍照提交作业)

单例模式-php

作业二

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



类图:


abstract class FormComponent{    protected $name;
public function __construct($name) { $this->name = $name; }
public function printName() { echo "Print ".get_class($this)."(".$this->name.")\n"; }}
class FormComposite extends FormComponent{ protected $elementAry = [];
public function add(FormComponent $element) { $this->elementAry[] = $element; }
public function getList() { return $this->elementAry; }}
class WinForm extends FormComposite{}
class Frame extends FormComposite{}
class Pictrue extends FormComponent{}
class Button extends FormComponent{}class Lable extends FormComponent{}
class TextBox extends FormComponent{}
class PasswordBox extends FormComponent{}
class CheckBox extends FormComponent{}

class LinkLable extends FormComponent{}
class Client{ private function getFormInfo() { $winform = new WinForm("WINDOW窗口");
$logo = new Pictrue("Logo图片"); $login = new Button("登录"); $register = new Button("注册"); $frame = new Frame("FRAME1");
$username = new Lable("用户名"); $input = new TextBox("文本框"); $passwd = new Lable("密码"); $passinput = new PasswordBox("密码框"); $checkbox = new CheckBox("复选框"); $tips = new TextBox("记住用户名"); $linklable = new LinkLable("忘记密码");
$frame->add($username); $frame->add($input); $frame->add($passwd); $frame->add($passinput); $frame->add($checkbox); $frame->add($tips); $frame->add($linklable);
$winform->add($logo); $winform->add($login); $winform->add($register); $winform->add($frame);
return $winform; }
private function showTree( $root) { $root->printName();
$list = $root->getList(); foreach ($list as $item) { if ($item instanceof FormComposite) { $this->showTree($item); }else { $item->printName(); } } }
public function run() { $root = $this->getFormInfo(); $this->showTree($root); }}
$cli = new Client();$cli->run();
复制代码


发布于: 2020 年 06 月 24 日阅读数: 57
用户头像

默默

关注

还未添加个人签名 2018.09.17 加入

还未添加个人简介

评论

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