Build生成者模型
2015-06-26 10:56
786 查看
#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; }
相关文章推荐
- 【Android UI设计与开发】第12期:顶部标题栏(三)ActionBar实现层级导航的返回效果
- ios学习笔记:tableviewcell中ui设置frame问题
- SPOJ - DQUERY 【主席树】
- S5PV210开发系列四_uCGUI的移植
- [XCode] XCode 中设置 UI 部件的 z-order
- Windows 10 build 10149手机版上手多图欣赏
- [Android基础知识] 之二十二 UI设计之 LayoutInflater详解
- 问题解决——开启Guest后仍无法共享打印机
- LintCode Unique Characters 判断字符串是否没有重复字符
- Egret之egret.gui.List的使用教程
- android 开源项目GuillotineMenu,酷炫的铡刀菜单
- UI设计: iOS 启动页的原则
- UI界面并不是只有白色设计才叫极简设计
- Leetcode|Repeated DNA Sequences
- iOS开发中UILocalNotification实现本地通知实现提醒功能
- uitableview 两种设置重用cell的方式
- select, iocp, epoll,kqueue及各种I/O复用机制
- xcode 总是输出 Unknown class ViewController in Interface Builder file
- How To Ask Questions The Smart Way
- 63.Unique Paths II&机器人走方格II