Build生成者模型

#include <iostream>
using namespace std;
//不知道为什么其实很好解释的东西在网上搞的人晕头转向的,以下是我的理解。
//一个基类衍生出许多具体实现的子类,这些子类都实现了虚基类的公共方法,
//然后我们再构造一个Direver对象,让基类做为他的成员变量,在调用的时候
//可以选择任意的子类对象传入然后可以调用该子类的方法,是不是很简单呢?

//“生成器模式的意图在于将一个复杂的构建与其表示相分离“这句话说实话我纠结
//了半天,非要把子类的具体调用用一个类包装起来说的如此高调,我也是醉了。

//再说的通俗一点,我炒一个菜,用鸡蛋也能炒,用肉也能炒,用黄瓜也可以炒,饭
//桌相当于一个包装类,你端什么菜我才能吃什么菜,而不管你有多少菜。

class Base
{
public:
    virtual void PrintfName() = 0;
    virtual void PrintfSchool() = 0;
};

class Student1 : public Base
{
public:
    void PrintfName()
    {
        cout << "Student1Name"<< endl;
    }
    void PrintfSchool()
    {
        cout << "Student1School"<<endl;
    }
};
class Student2 : public Base
{
public:
    void PrintfName()
    {
        cout << "Student2Name"<< endl;
    }
    void PrintfSchool()
    {
        cout << "Student2School"<< endl;
    }
};

class Direver
{
public:
    Direver(Base *base)
    {
        pbase = base;
    }
    void Construct()
    {
        pbase->PrintfName();
        pbase->PrintfSchool();
    }
private:
    Base *pbase;
};

int main()
{
    Direver d(new Student2());//此处指定传入的子类对象。
    d.Construct();//哈哈,这里就调用你想调用的子类中的对象及方法。
    return 0;
}
时间: 2024-11-14 11:35:04

Build生成者模型的相关文章

caffe微调已生成的模型,测试(Linux)

感谢博主lynnandwei,写的博客.还是由于受其启发,所以才想到了怎么微调模型,哎,菜比伤不起. 还是在cifar10模型下面.想微调已经生成的模型.在caffe-master文件夹下面输入命令 ./build/tools/caffe.bin train -model=examples/cifar10/cifar10_quick_train_test.prototxt -solver=examples/cifar10/cifar10_quick_solver.prototxt -weight

EF自动生成的模型edmx代码分析

edmx代码分析 本文分析Entity Framework从数据库自动生成的模型文件代码(扩展名为edmx). 1. 概述 本文使用的数据库结构尽量简单,只有2个表,一个用户表和一个分公司表(相当于部门表),一个用户必须属于一个分公司,因此用户表有一外键关联到分公司表.数据(实体)模型如图1. 图1  数据模型 2. 整体结构 以文本方式打开.edmx文件,可以看到这是一个xml文件,根结点下包括2部分内容,如图2所示. 图2  整个文档由2大部分组成 图2中,第一部分为<edmx:Runtim

PowerDesigner生成CDM模型

一.新建概念数据模型  1)选择File-->New,弹出如图所示对话框,选择CDM模型(即概念数据模型)建立模型. 2)完成概念数据模型的创建.以下图示,对当前的工作空间进行简单介绍.(以后再更详细说明) 3) 选择新增的CDM模型,右击,在弹出的菜单中选择"Properties"属性项,弹出如图所示对话框. 在"General"标签里可以输入所建模型的名 称.代码.描述.创建者.版本以及默认的图表等等信息.在"Notes"标签里可以输入

利用xcode Build生成模拟器运行包

真机只能运行.ipa包 模拟器上只能运行.app包 xcode中生成.app包步骤: 启动xcode IDE,打开gigold源码工程 [project]——[gigold]——[Basic]:修改Valid Architectures,增加[i386]选项  点击xcode左上角的[运行]按钮,开始build 左侧导航树:选择[gigold]——[Products]——[gigold.app],右侧属性面板中复制[Full Path],如:/Users/dengqingyong/Library

EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型

官方教程:https://docs.microsoft.com/en-us/aspnet/core/data/?view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新的数据库,我们首先在appsettings.json文件夹中,使用json对来给出mysql数据库连接语句,其次在 Startup.cs中使用MySql的中间价来注入MySql服务,在这里,我使用的MySql驱动是Pomelo.EntityFramoworkCore.MySql.新建一个类,用来做数

设计模式之Build(生成者模式)

一.生成器模式的定义: 生成器模式也称为建造者模式.生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(GoF).在软件设计中,有时候面临着一个非常复杂的对象的创建工作.这个复杂的对象通常可以分成几个较小的部分,由各个子对象组合出这个复杂对象的过程相对来说比较稳定,但是子对象的创建过程各不相同并且可能面临变化.根据OOD中的OCP原则,应该对这些子对象的创建过程进行变化封装. 二.生成模式的类结构图: builer模式中主要有两个角色,一个是builder(

thinkphp url build 生成localhost.localhost的解决方案

找到框架核心Url.php的下面一段代码 // 原代码// URL组装$url = $domain . rtrim($this->root ?: $this->app['request']->root(), '/') . '/' . ltrim($url, '/'); // 修改后的代码 // URL组装 $url = rtrim($this->root ?: $this->app['request']->root(), '/') . '/' . ltrim($url,

生成pb模型出错

raise self.ParseError('Expected identifier or number, got %s.' % result)google.protobuf.text_format.ParseError: 139:1 : Expected identifier or number, got }. 不知道为什么pipeconfig里面结尾多了"}",看了看config里面明明没有 原文地址:https://www.cnblogs.com/tangmiao/p/99468

《Entity Framework 6 Recipes》中文翻译系列 (40) ------ 第七章 使用对象服务之从跟踪器中获取实体与从命令行生成模型(想解决EF第一次查询慢的,请阅读)

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-5  从跟踪器中获取实体 问题 你想创建一个扩展方法,从跟踪器中获取实体,用于数据保存前执行一些操作. 解决方案 假设你有如图7-7所示的模型. 图7-7. 包含实体Technician和ServiceCall的模型 在这个模型中,每个技术员(technician)都有一些业务服务请求(service call),业务服务请求包含联系人姓名,问题.使用代码清单7-4,创建一个扩展方法获取