培训机构网站如何建设,重庆巴南区网站开发公司,新闻发稿发布平台,搭建网站费用是多少目录 
一、设计模式定义 
二、设计模式的优点 
三、设计模式缺点 
四、设计模式中的抽象思维 
五、抽象的方法 
六、设计模式应用场景 
七、设计模式分类 
附加知识 
#xff08;1#xff09;C面向对象三种访问修饰符 
#xff08;2#xff09;父类析构函数必须为虚函数 
1C面向对象三种访问修饰符 
2父类析构函数必须为虚函数 
3override关键字使用 
4final关键字使用 
5父类对象可以与子类对象相互转化吗 
6虚函数、虚函数表介绍 一、设计模式定义 是一套被反复使用的代码设计经验的总结是经过提炼的出色设计方法。设计模式主要是指面向对象这种编程模型下的设计模式。 二、设计模式的优点 
设计模式一般应用于大型项目中设计模式可以使各模块之间的代码灵活性和可复用性增强。 灵活性是指可扩展性和低耦合型增加新的功能不需要大范围修改代码。 可复用性是指可以到处重复使用面向对象的三大特性封装、继承、多态。泛型编程。面向对象程序设计原则之一单一原则一个类只干好一件事不涉及其他事物 三、设计模式缺点 代码的复杂度增加增加了学习和阅读的负担设计模式在一定程序会降低代码运行效率对于带来的优点其下降运行效率一般可忽略。 应用设计模式不当导致的代码灵活性、可复用性、可读性下降。 四、设计模式中的抽象思维 
抽象思维强调对象的本质属性主要用于一些软件设计中的解耦合的过程。 抽象思维的概念能从事物中抽取出或者提炼出一些本质的共性的内容把这些共性的内容组合到一起封装成一个类或者方法。继承抽象类的子类都有不同的特点进行扩展。 五、抽象的方法 
1、分解法把一个复杂的事物分解成若干个单一功能的事物。 2、抽象法从每个简单的事物中抽象出本质的内容封装起来。 六、设计模式应用场景 
通常应用于大型项目几万到几十万行代码及以上项目不建议应用于小型项目小型项目要是适合也可使用设计模式。对于大量重复性代码需要使用设计模式进行设计提高代码扩展性。 七、设计模式分类 
常用的设计模式可以分为三大类行为型模式、创建型模式、结构型模式 1创建型模式有6种简单工厂模式(Simple Factory)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、单例模式(Singleton)、原型模式(Prototype)、建造者模式(Builder)。 2结构性模式有7种装饰模式(Decorator)、外观模式(Facade)、组合模式(Composite)、享元模式(Flyweight)、代理模式(Proxy)、适配器模式(Adapter)、桥接模式(Bridge) 3行为型模式包括的设计模式有11种模板方法模式(Template Method)、策略模式(Strategy)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、状态模式(State)、     中介模式(Mediator)、备忘录模式(Memento)、职责链模式(Chain Of Responsibility)、解释器模式(Interpreter)、访问者模式(Visitor)。     创建型模式定义关注如何创建对象将对象的创建和使用相互分离解耦取代传统对象创建方式带来的扩展性差的问题。结构型模式关注对象之间的关系。涉及如何组合各种对象以便获得更加灵活的结构通过继承以及更多的关系组合获得更加灵活的程序结构。达到简化设计模式。行为模式定义关注对象的行为或者交互方面的内容主要涉及算法和对象之间的职责分配。通过使用对象组合行为模式可以描述一组对象如何协作来完成一个整体任务。 注意设计模式代码一般不是一次设计设计好的是多次修改而成。软件开发需求变化是频繁的尝试寻找变化点把变化部分和稳定部分分离开发在变化的地方使用设计模式。 附加知识 
设计模式主要利用类的多态、继承、封装方法对事物进行抽象设计。并对共用的属性和方法抽象成基类对变化的属性使用虚函数进行多态设计。对面向对象的相关知识点可以进行回顾 1C面向对象三种访问修饰符 
public: 允许该类函数、子类函数、友元函数、该类对象可以访问。 protected:只允许该类函数、子类函数、友元函数可以访问。 private:只允许奔雷的成员函数可以访问。 
具体可参考 
C中public、protected、private的区别_风雨也无晴的博客-CSDN博客 
友元(友元函数、友元类和友元成员函数) C_夜雨听萧瑟的博客-CSDN博客      
2父类析构函数必须为虚函数 
定义父类对象初始化时让父类对象实际指向子类。同时父类析构函数必须为虚函数这样在父类对象析构时不会调用子类的虚构函数导致子类的对象不能释放造成子类对象的内存泄露。具体可参考为什么父类析构函数必须为虚函数_父类析构函数不是虚函数会怎么样_IM-STONE的博客-CSDN博客 3override关键字使用 
在子类中重写父类的虚函数时在其后面加上override关键字如果父类不存在该虚函数则编译不通过。 
class A
{
public:virtual void FunA()0; //纯虚函数子类必须实现该函数。virtual int  FunB(){}; //虚函数子类可以重写也可以不用重写
}class B:public A
{public:void FunA()override{};int FunB()override{};
} 
C:重载重定义重写的区别_重定义和重写的区别__来信的博客-CSDN博客 
4final关键字使用 
如果当前类不能有派生类则可以在类后面添加关键字final如果不想该虚函数不被重写在该虚函数后面添加final。如果继承final类或者重载final修饰的函数会导致编译报错。 
class A final  //用法1该类不能被继承。
{}class B
{
public:virtual void fun()final{}; //用法2该虚函数不能被重写。
} 
C final关键字_mayue_csdn的博客-CSDN博客 5父类对象可以与子类对象相互转化吗 父类对象与子类对象可以相互转换前提是父类对象一定是用子类对象初始化的。子类对象是对父类对象的扩展子类属性一般是大于父类属性。 
具体分析可参考父类对象和子类对象之间可以相互转换吗_父对象转成子对象_扶公瑾以苏的博客-CSDN博客 
6虚函数、虚函数表介绍 
可参考下面链接 
(超重要)构造函数为什么不能为虚函数析构函数为什么要虚函数_构造函数能不能为虚函数_HeisenbergWDG的博客-CSDN博客 
C中虚函数、虚指针和虚表详解_bob62856的博客-CSDN博客 C中的虚函数表和虚函数在内存中的位置_虚函数表存在什么位置_HerofH_的博客-CSDN博客