架构师训练营 - 第 03 周作业提交
1. 请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。
2. 请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
virtual void Print() = 0;
复制代码
void DoPrint(std::string class_name);
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
Form::Form(std::string label)
复制代码
void Form::DoPrint(std::string class_name)
复制代码
std::cout << "print " + class_name + "(" + Label() + ")" << std::endl;
复制代码
std::string Form::Label()
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \file: containerform.h
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
class ContainerForm : public Form
复制代码
ContainerForm(std::string label);
复制代码
virtual ~ContainerForm();
复制代码
virtual void Print() override = 0;
复制代码
virtual void AddChild(Form* child);
复制代码
std::vector<Form* > childs_;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \file: containerform.cpp
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
#include "containerform.h"
复制代码
ContainerForm::ContainerForm(std::string label)
复制代码
ContainerForm::~ContainerForm()
复制代码
for (int i = 0; i < childs_.size(); ++i) {
复制代码
void ContainerForm::AddChild(Form *child)
复制代码
childs_.push_back(child);
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
#include "containerform.h"
复制代码
class WinForm : public ContainerForm
复制代码
WinForm(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
WinForm::WinForm(std::string label)
复制代码
for (int i = 0; i < childs_.size(); ++i) {
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
#include "containerform.h"
复制代码
class Frame : public ContainerForm
复制代码
Frame(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
Frame::Frame(std::string label)
复制代码
for (int i = 0; i < childs_.size(); ++i) {
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
class Button : public Form
复制代码
Button(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
Button::Button(std::string label)
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
class CheckBox : public Form
复制代码
CheckBox(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
CheckBox::CheckBox(std::string label)
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
class Lable : public Form
复制代码
Lable(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
Lable::Lable(std::string label)
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
class LinkLable : public Form
复制代码
LinkLable(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
LinkLable::LinkLable(std::string label)
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
class PasswordBox : public Form
复制代码
PasswordBox(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \file: passwordbox.cpp
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
PasswordBox::PasswordBox(std::string label)
复制代码
void PasswordBox::Print()
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
class Picture : public Form
复制代码
Picture(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
Picture::Picture(std::string label)
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
class TextBox : public Form
复制代码
TextBox(std::string label);
复制代码
virtual void Print() override;
复制代码
/**********************************************************************************************//**
复制代码
** \copyright: Copyright (C) 2020 The Radiofrog Company Ltd.
复制代码
** \author: rui <rui@radiofrog.com>
复制代码
**************************************************************************************************/
复制代码
TextBox::TextBox(std::string label)
复制代码
发布于: 2020 年 06 月 21 日阅读数: 106
评论 (1 条评论)