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

看网站时的关键词惠州网站制作推广公司排名

看网站时的关键词,惠州网站制作推广公司排名,wordpress标签翻转,做淘宝的导购网站目录 1、Bridge模式的提出 2、Bridge模式的定义 3、Bridge模式总结 4、需求描述 5、多继承方式实现 6、使用Bridge设计模式实现 1、Bridge模式的提出 在软件功能模块设计中,如果类的实现功能划分不清晰,使得继承得到的子类往往是随着需求的变化&am…

目录

1、Bridge模式的提出

2、Bridge模式的定义

3、Bridge模式总结

4、需求描述

5、多继承方式实现

6、使用Bridge设计模式实现


1、Bridge模式的提出

        在软件功能模块设计中,如果类的实现功能划分不清晰,使得继承得到的子类往往是随着需求的变化,子类急剧膨胀,充斥重复代码。将类要实现功能划分清楚是设计较好软件框架的关键。

2、Bridge模式的定义

        对于类的实现功能具有两个变化的维度,甚至由多个维度的变化,使用类的多继承实现方式,会使子类数目急剧膨胀。Bridge模式使用“对象间的组合关系”解耦抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度变化,即将不同的维度分别进行抽象,然后各自根据变化维度进行继承。

3、Bridge模式总结

        Bridge模式的应用一般在“两个非常强的变化维度”,有时一个类甚至有多个变化的维度,这时使用Bridge模式的扩展模式来设计代码。

4、需求描述

手机有固有属性(材料、颜色、摄像头个数)和软件属性(开机动画、网络打印、支持app数目)。有2款A、B类型手机,A、B分别继承手机的固有属性功能。在A款基础上又有2款Higher、Pro类型,Higher、Pro分别继承手机的软件功能;在B款的基础上也有2种Higher、Pro,这2种也分别继承手机的软件功能。

5、多继承方式实现

#include <iostream>class MobilePhone
{
public://手机材质virtual void PhoneMaterial()=0;//手机颜色virtual void PhoneColor()=0;//手机大小virtual void PhoneCameNum()=0;//开机动画virtual void BootAnimation()=0;//网络打印类型virtual void NetPrintType()=0;//软件支持数目virtual void SoftSuppotNum()=0;virtual ~MobilePhone(){};};//下面的类继承关系中,不同层级的类继承不同抽象函数,可以分函数抽象一个类,见Bridge模式。class APhoneNoraml:public MobilePhone
{
public:virtual ~APhoneNoraml(){};virtual void PhoneMaterial()override{std::cout << "Glass material" << std::endl;};virtual void PhoneColor()override{std::cout << "2 Colors" << std::endl;};virtual void PhoneCameNum()override{std::cout << "2 CamNum" << std::endl;};
};class BPhoneNoraml:public MobilePhone
{
public:virtual ~BPhoneNoraml(){};virtual void PhoneMaterial()override{std::cout << "Glass material" << std::endl;};virtual void PhoneColor()override{std::cout << "3 Colors" << std::endl;};virtual void PhoneCameNum()override{std::cout << "3 CamNum" << std::endl;};
};class APhoneHiger:public APhoneNoraml
{
public:virtual ~APhoneHiger(){};virtual void BootAnimation()override{APhoneNoraml::PhoneMaterial();APhoneNoraml::PhoneColor();APhoneNoraml::PhoneCameNum();std::cout << "good luck" << std::endl;};virtual void NetPrintType()override{std::cout << "Support base txt type" << std::endl;};virtual void SoftSuppotNum()override{std::cout << "Support 20 app" << std::endl;};
};class BPhoneHiger:public BPhoneNoraml
{
public:virtual ~BPhoneHiger(){};virtual void BootAnimation()override{BPhoneNoraml::PhoneMaterial();BPhoneNoraml::PhoneColor();BPhoneNoraml::PhoneCameNum();std::cout << "gook lunck" << std::endl;};virtual void NetPrintType()override{std::cout << "Support base txt type" << std::endl;};virtual void SoftSuppotNum()override{std::cout << "Support 20 app" << std::endl;};};class APhonePro:public APhoneNoraml
{
public:virtual ~APhonePro(){};virtual void BootAnimation()override{APhoneNoraml::PhoneMaterial();APhoneNoraml::PhoneColor();APhoneNoraml::PhoneCameNum();std::cout << "best wishes" << std::endl;};virtual void NetPrintType()override{std::cout << "Support base 3 type" << std::endl;};virtual void SoftSuppotNum()override{std::cout << "Support 30 app" << std::endl;};
};class BPhonePro:public BPhoneNoraml
{
public:virtual ~BPhonePro(){};virtual void BootAnimation()override{BPhoneNoraml::PhoneMaterial();BPhoneNoraml::PhoneColor();BPhoneNoraml::PhoneCameNum();std::cout << "best wishes" << std::endl;};virtual void NetPrintType()override{std::cout << "Support base 3 type" << std::endl;};virtual void SoftSuppotNum()override{std::cout << "Support 30 app" << std::endl;};};int main()
{MobilePhone* higherA = new APhoneHiger();higherA->BootAnimation();higherA->NetPrintType();higherA->SoftSuppotNum();delete higherA;higherA = nullptr;MobilePhone* proA = new APhonePro();proA->BootAnimation();proA->NetPrintType();proA->SoftSuppotNum();delete proA;proA = nullptr;return 0;
}

运行结果如下:

6、使用Bridge设计模式实现

#include <iostream>//将第一个变化维度的三个函数抽象成一个类,供第二层继承使用
class MobilePhone
{
public://手机材质virtual void PhoneMaterial()=0;//手机颜色virtual void PhoneColor()=0;//手机大小virtual void PhoneCameNum()=0;virtual ~MobilePhone(){}
};//将第二个变化维度的三个函数抽象出一个类,供第三层继承使用
class MobileSoft
{
public:MobileSoft(MobilePhone* p):Imp(p){};MobilePhone *Imp;//开机动画virtual void BootAnimation()=0;//网络打印类型virtual void NetPrintType()=0;//软件支持数目virtual void SoftSuppotNum()=0;
};class APhoneNoraml:public MobilePhone
{
public:virtual ~APhoneNoraml(){};virtual void PhoneMaterial()override{std::cout << "Glass material" << std::endl;};virtual void PhoneColor()override{std::cout << "2 Colors" << std::endl;};virtual void PhoneCameNum()override{std::cout << "2 CamNum" << std::endl;};
};class BPhoneNoraml:public MobilePhone
{
public:virtual ~BPhoneNoraml(){};virtual void PhoneMaterial()override{std::cout << "Glass material" << std::endl;};virtual void PhoneColor()override{std::cout << "3 Colors" << std::endl;};virtual void PhoneCameNum()override{std::cout << "3 CamNum" << std::endl;};
};//在第三层继承关系处使用对象组合。
class PhoneHiger:public MobileSoft
{
public:PhoneHiger(MobilePhone *p):MobileSoft(p){};virtual ~PhoneHiger(){};virtual void BootAnimation()override{Imp->PhoneMaterial();Imp->PhoneColor();Imp->PhoneCameNum();std::cout << "good luck" << std::endl;};virtual void NetPrintType()override{std::cout << "Support base txt type" << std::endl;};virtual void SoftSuppotNum()override{std::cout << "Support 20 app" << std::endl;};
};class PhonePro:public MobileSoft
{
public:PhonePro(MobilePhone *p):MobileSoft(p){};virtual ~PhonePro(){};virtual void BootAnimation()override{Imp->PhoneMaterial();Imp->PhoneColor();Imp->PhoneCameNum();std::cout << "best wishes" << std::endl;};virtual void NetPrintType()override{std::cout << "Support base 3 type" << std::endl;};virtual void SoftSuppotNum()override{std::cout << "Support 30 app" << std::endl;};
};int main()
{std::cout << " ************** PhoneHiger ************** " << std::endl;MobilePhone *normalA = new APhoneNoraml();MobileSoft *higherA = new PhoneHiger(normalA);higherA->BootAnimation();higherA->NetPrintType();higherA->SoftSuppotNum();std::cout << "\n ************** PhonePro ************** " << std::endl;MobilePhone *normalPro = new APhoneNoraml();MobileSoft *proA = new PhonePro(normalPro);proA->BootAnimation();proA->NetPrintType();proA->SoftSuppotNum();return 0;
}

运行结果如下:

       上面的代码将不同的变化维度分别抽象成一个类,供子类继承;并且其中一个维度的继承关系用“类成员是基类对象”组合的方式进行替代,使功能类代码具有良好的扩展性,也遵循单一职责原则。

http://www.yayakq.cn/news/705831/

相关文章:

  • 中国专门做生鲜的网站如何做网站运营
  • 赤风设计深圳seo公司助力网络营销飞跃
  • 河北省建设网和执业中心网站四川省住房与建设厅网站首页
  • 网站建设大作业电子版想给公司做个网站怎么做的
  • 孵化器网站建设凡科送审平台学生不能登录
  • 成都金牛区建设局网站开发app学什么编程语言
  • 网站开发用户分析广告设计公司公司vi设计
  • 潍坊设计网站建设网站开发与应用 大作业作业
  • 广东城市建设档案馆官方网站台州网站建设策划
  • 学做网站平台北京模板建站软件
  • 网站风格的特点福州品牌网站建设oem
  • 大连开发区网站开发公司seo快速优化
  • 青岛美工网页设计wordpress 优化原理
  • 给大家黄页推广网站安徽省建设厅网站证书查询
  • 商务网站建设期末作业路桥网站制作
  • 江门住房和城乡建设部网站都有哪些做二手挖机的网站
  • 一站式做网站系统展览展会策划公司
  • 商城移动端网站开发河南seo和网络推广
  • 青海旅游网站建设方案大气医院网站源码
  • 网站开发技术与应用课程设计专业网站建设人工智能研发
  • 昆明做网站的网络公司搭建网站 程序
  • 一锅汤资源网站建设大全展开网站建设
  • 门户网站建设网站模板的功能
  • 广东省建设网站网络工程就业岗位有哪些
  • 手机网站开发工具网站建设邮箱免费自助建站
  • 东莞手机网站设计公司网站的页面风格有哪些
  • 织梦手机网站免费模板广州网站制作企业
  • 网站设计分类做一个关于电影的网页设计
  • 手机上怎么查看网站设计免费设计图网站
  • 高端网站定制北京商城网站开发费用