【c++】29.设计模式总结

持续更新中…

1.有个通用的使用多态、虚函数 的方法:
  • 1.定义一个容器,其中的元素类型是基类,在容器中存入不同子类类型的指针。
  • 2.不同子类中定义自己的接口虚函数。
  • 3.当遍历该容器时,会根据该容器中的不同类型自动调用不同子类的接口函数。

2.如果增加一个需求 或者 更改一个需求很频繁时候

做法是

  • 1.先定义一个基类Base_A,在这个基类定义公共的一个接口虚函数 Func()
  • 2.再定义子类 Derived_BDerived_C 继承于这个基类 Base_A,在子类 Derived_BDerived_C 中去具体实现这个需求的虚函数接口Func()
  • 3.在另一个类Class_C中定义一个容器(以vector容器为例)std::vector<Base_A*> Vct,通过在容器Vct增加或者修改要使用的具体子类类型 Derived_BDerived_C 的对象.
    遍历该容器Vct时,会根据该容器中的不同类型自动调用不同子类的接口函数Func()
3.区分组合和聚合的方法:生命周期是否一致。一致的是组合,不一致的是聚合。

中间的装饰器是为了提取公共代码???

4.单一职责原则:一个类只有一个变化的原因。
5.依赖倒置原则:应该依赖抽象,而不应该依赖实现细节。(李老师说了一句,这里的依赖指的是编译时依赖???)
6.面向接口编程:最简单的一个表现形式就是,变量要声明成 抽象基类。

只要是new出来的,都是实现细节,是细节依赖,紧耦合(依赖具体类)。Base *A=new Derived();这种做法违背依赖倒置原则。因为Base *A是抽象基类接口,而new Derived()带来的是细节依赖,紧耦合(依赖具体类)。—工厂模式讲解

7.虚函数就是延时到运行时!

虚函数就是把函数的调用延时到运行时确定!

8.C++的多态性分为两种:编译时的多态、运行时的多态; 使用重载来实现编译时的多态,使用虚函数来实现运行时的多态。

如果要用多态,就必须使用指针。

9.为什么多态必须使用指针?

答:参考博客 https://www.cnblogs.com/yinheyi/p/10525543.html

10.工厂模式里面讲到:设计模式不是把变化消灭掉了,而是把变化限定到了一个局部位置。

工厂模式里面就是,类 MainForm 的整体看上去没有依赖任何具体类,他里面实用的都是抽象类。 抽象类A* a = 抽象类B对象指针->createA(); 其中 createA() 返回一个 抽象类A 的对象指针。我们通过在MainForm的构造函数(或者它的接口函数)传入一个B的具体子类指针,然后把该指针赋值给 抽象类B对象指针。这样这个B的具体子类并不在类 MainForm中定义创造,而是通过参数传进来,就保证了类MainForm中全部都是抽象的、稳定的

李老师的代码为了突出重点,new之后,都没有规范写delete,但是我们实际开发一定要记得写delete。不想写就使用智能指针shared_ptr声明类别变量,然后使用make_shared进行初始化。

11.多态只对于虚函数来说。

对于类中的非虚函数,不能通过 把子类对象赋值给基类对象,或者 把子类指针赋值给基类指针的方式,即,假设子类Derived有一个func()普通成员函数,基类Base没有,不能通过Derived derived; Base base=derived; base.func()或者 Base *base= new Derived();,base->func();的方式来调用到子类的func非虚函数(普通成员函数)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值