当前位置: 首页 > news >正文

服装公司网站策划书外网设计灵感网站

服装公司网站策划书,外网设计灵感网站,南昌网站搭建公司 赣ICP,如何为一个网站做app1. 工厂模式的特点 在海贼王中#xff0c;作为原王下七武海之一的多弗朗明哥#xff0c;可以说是新世界最大的流氓头子#xff0c;拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介#xff0c;控制着世界各地的诸多产业#xff0c;人造恶魔果实工厂就…1. 工厂模式的特点 在海贼王中作为原王下七武海之一的多弗朗明哥可以说是新世界最大的流氓头子拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介控制着世界各地的诸多产业人造恶魔果实工厂就是其中之一。 人造恶魔果实的最大买家是四皇之一的凯多凯多其实很明智他没有自己去生产可能有这么几个因素 凯多手下没有像凯撒·库朗一样的科学家无法掌握生产人造恶魔果实这种顶级的科学技术【意味着构造一个对象有时候需要经历一个非常复杂的操作流程既然麻烦那索性就不干了】。有需求下单就行只需关心结果无需关心过程【实现了解耦合】。人造恶魔果实出了问题自己无责任售后直接找明哥【便于维护】。 在我们现实生活中也是一样买馒头和自己蒸馒头、去饭店点一份大盘鸡和自己养鸡杀鸡做大盘鸡这是全然不同的两种体验 自己做麻烦而且有失败的风险需要自己承担后果。买现成的可以忽略制作细节方便快捷并且无风险得到的肯定是美味的食物。 对于后者就相当于是一个加工厂通过这个工厂我们就可以得到想要的东西在程序设计中这种模式就叫做工厂模式工厂生成出的产品就是某个类的实例也就是对象。关于工厂模式一共有三种分别是简单工厂模式、工厂模式、抽象工厂模式。 通过上面人造恶魔果实的例子我们能够了解到不论使用哪种工厂模式其主要目的都是实现类与类之间的解耦合这样我们在创建对象的时候就变成了拿来主义使程序更加便于维护。在本节中先介绍简单工厂模式。 基于简单工厂模式去创建对象的时候需要提供一个工厂类专门用于生产需要的对象这样关于对象的创建操作就被剥离出去了。 简单工厂模式相关类的创建和使用步骤如下 创建一个新的类, 可以将这个类称之为工厂类。对于简单工厂模式来说需要的工厂类只有一个。在这个工厂类中添加一个公共的成员函数通过这个函数来创建我们需要的对象关于这个函数一般将其称之为工厂函数。关于使用首先创建一个工厂类对象然后通过这个对象调用工厂函数这样就可以生产出一个指定类型的实例对象了。 2. 生产的产品 在海贼世界中凯撒·库朗研制的人造恶魔果实是有瑕疵的吃下人造恶魔果实的失败品没能成功获得果实能力的人会被剥夺除笑以外的一切表情所以人造恶魔果实被称为SMILE。 下面是明哥的SMILE工厂要生产的众多人造动物系恶魔果实中的三种: // 人造恶魔果实· 绵羊形态 class SheepSmile { public:void transform(){cout 变成人兽 -- 山羊人形态... endl;}void ability(){cout 将手臂变成绵羊角的招式 -- 巨羊角 endl;} };// 人造恶魔果实· 狮子形态 class LionSmile { public:void transform(){cout 变成人兽 -- 狮子人形态... endl;}void ability(){cout 火遁· 豪火球之术... endl;} };// 人造恶魔果实· 蝙蝠形态 class BatSmile { public:void transform(){cout 变成人兽 -- 蝙蝠人形态... endl;}void ability(){cout 声纳引箭之万剑归宗... endl;} };不论是吃了那种恶魔果实获得了相应的能力之后可以做的事情大体是相同的那就是形态变化transform() 和 使用果实能力alility()。 另外生产这些恶魔果实的时候可能需要极其复杂的参数在此就省略了【也就是说这些类的构造函数的参数在此被省略了】。 3. 如何生产 如果想要生产出这些恶魔果实可以先创建一个工厂类然后再给这个工厂类添加一个工厂函数又因为我们要生成三种不同类型的恶魔果实所以可以给工厂函数添加一个参数用以控制当前要生产的是哪一类。 enum class Type:char{SHEEP, LION, BAT}; // 恶魔果实工厂类 class SmileFactory { public:enum class Type:char{SHEEP, LION, BAT};SmileFactory() {}~SmileFactory() {}void* createSmile(Type type){void* ptr nullptr;switch (type){case Type::SHEEP:ptr new SheepSmile;break;case Type::LION:ptr new LionSmile;break;case Type::BAT:ptr new BatSmile;break;default:break;}return ptr;} };int main() {SmileFactory* factory new SmileFactory;BatSmile* batObj (BatSmile*)factory-createSmile(Type::BAT);return 0; }关于恶魔果实的类型上面的类中用到了强类型枚举C11新特性增强了代码的可读性并且将枚举元素设置为了char类型节省了内存。函数createSmile(Type type)的返回值是void*类型这样处理主要是因为每个case 语句创建出的对象类型是不一样的为了实现兼容故此这样处理。得到函数createSmile(Type type)的返回值之后还需要将其转换成实际的类型处理起来还是比较繁琐的。 关于工厂函数的返回值在C中还有一种更好的解决方案就是使用多态。如果想要实现多态需要满足三个条件类和类之间有继承关系。父类中有虚函数并且在子类中需要重写这些虚函数。使用父类指针或引用指向子类对象。 所以我们需要给人造恶魔果实提供一个基类然后让上边的三个类SheepSmile、LionSmile、BatSmile作为子类继承这个基类。根据分析我们就有画出简单工厂模式的UML类图了 根据UML类图编写出的代码如下 #include iostream using namespace std;class AbstractSmile { public:virtual void transform() {}virtual void ability() {}virtual ~AbstractSmile() {} }; // 人造恶魔果实· 绵羊形态 class SheepSmile : public AbstractSmile { public:void transform() override{cout 变成人兽 -- 山羊人形态... endl;}void ability() override{cout 将手臂变成绵羊角的招式 -- 巨羊角 endl;} };// 人造恶魔果实· 狮子形态 class LionSmile : public AbstractSmile { public:void transform() override{cout 变成人兽 -- 狮子人形态... endl;}void ability() override{cout 火遁· 豪火球之术... endl;} };class BatSmile : public AbstractSmile { public:void transform() override{cout 变成人兽 -- 蝙蝠人形态... endl;}void ability() override{cout 声纳引箭之万剑归宗... endl;} };// 恶魔果实工厂类 enum class Type:char{SHEEP, LION, BAT}; class SmileFactory { public:SmileFactory() {}~SmileFactory() {}AbstractSmile* createSmile(Type type){AbstractSmile* ptr nullptr;switch (type){case Type::SHEEP:ptr new SheepSmile;break;case Type::LION:ptr new LionSmile;break;case Type::BAT:ptr new BatSmile;break;default:break;}return ptr;} };int main() {SmileFactory* factory new SmileFactory;AbstractSmile* obj factory-createSmile(Type::BAT);obj-transform();obj-ability();return 0; }通过上面的代码我们实现了一个简单工厂模式关于里边的细节有以下几点需要说明 由于人造恶魔果实类有继承关系 并且实现了多态所以父类的析构函数也应该是虚函数这样才能够通过父类指针或引用析构子类的对象。 工厂函数createSmile(Type type)的返回值修改成了AbstractSmile*类型这是人造恶魔果实类的基类通过这个指针保存的是子类对象的地址这样就实现了多态所以在main()函数中通过obj对象调用的实际是子类BatSmile中的函数因此打印出的信息应该是这样的 变成人兽 -- 蝙蝠人形态... 声纳引箭之万剑归宗...
http://www.pierceye.com/news/90564/

相关文章:

  • 厦门网站网页设网页素材html
  • 活字格能开发企业网站吗商品门户网站解决方案
  • 网站虚拟主机内存不足能不能链接美工怎么做网站效果图
  • 网站版建设软件开发培训班有哪些
  • 舟山市城市建设档案馆网站武夷山景区网站建设特点
  • 北京建设工程质量总站网站哈尔滨网站只做
  • 做外单网站有哪些网站开发工程师需要什么技术
  • 跨境电商自己做网站引流会宁县建设局网站
  • 对于学校网站建设的建议google推广公司哪家好
  • 国外做装饰画的网站公司logo设计图片欣赏
  • 宿州外贸网站建设公司工信部资质查询网站
  • 动漫做暧视频网站用手机制作动画的app
  • 网站备案 域名证书帝国cms响应式网站模板
  • 一个电信ip做网站卡不卡企业网站建设排名资讯
  • 网站建设论文的开题报告制作一个app软件需要多少时间
  • 我们做的网站是优化型结构做二手车网站需要什么
  • 湛江网站建设保定公司互联网信息服务平台官网
  • 做展柜平时在哪里网站推广网站色彩学
  • 网站建站 seo企业网站建设方案模板
  • 国外有哪些做deal的网站四川建筑职业学校官网教务网
  • 无锡网站制作工作室临夏州建设厅官方网站
  • 怎么建设淘宝联盟的网站150m网站空间
  • 淘宝联盟链接的网站怎么做的wordpress幻灯片教程视频教程
  • 网站上线稳定后工作wordpress 不同的文章
  • 网站制作一条龙淘宝详情页制作
  • 海南营销网站建设安徽省住房城乡建设厅网站
  • 单招网站开发基础知识厚街网站建设公司
  • 怎么建微信群如何完成seo优化
  • 顺义广州网站建设wordpress更改字体大小
  • 网站二级目录怎么做婚纱摄影类网站