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

行业网站制作模板网站如何做优化

行业网站制作,模板网站如何做优化,专业设计网址青岛网站开发,学广告设计学费是多少目录 一、单例模式 1、设计模式 2、单例模式 1、饿汉模式 2、懒汉模式 3、单例对象的释放问题 二、设计一个不能被拷贝的类 三、设计一个只能在堆上创建对象的类 四、设计一个只能在栈上创建对象的类 五、设计一个不能被继承的类 一、单例模式 1、设计模式 概念 设计模式Design Pattern是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化设计模式是软件工程的基石脉络如同大厦的结构一样。 2、单例模式 一个类只能创建一个对象即单例模式该模式可以保证系统中该类只有一个实例并提供一个访问它的全局访问点该实例被所有程序模块共享。 单例模式有两种实现模式 1、饿汉模式 就是说不管你将来用不用程序启动时就创建一个唯一的实例对象。即在main函数之前就创建好一个唯一的对象。 class MemoryPool { public:static MemoryPool GetInstance(){return _inst;}//防拷贝MemoryPool(MemoryPool const) delete;MemoryPool operator(MemoryPool const) delete; private://构造函数私有化MemoryPool(){}char* _ptr nullptr;static MemoryPool _inst; }; MemoryPool MemoryPool::_inst;// 在程序入口之前就完成单例对象的初始化 优点简单没有线程安全问题。 缺点1、一个程序中有多个单例并且有先后创建初始化顺序要求时饿汉模式无法控制无法控制初始化顺序。2、如果饿汉单例类初始化时任务多会影响程序的启动速度。 如果这个单例对象在多线程高并发环境下频繁使用性能要求较高那么显然使用饿汉模式来避 免资源竞争提高响应速度更好。  2、懒汉模式 第一次使用实例对象时再创建唯一的实例对象。 class MemoryPool { public:static MemoryPool* GetInstance(){if (_inst nullptr){_inst new MemoryPool;}return _inst;}private://构造函数私有化MemoryPool(){}char* _ptr nullptr;static MemoryPool* _inst; }; MemoryPool* MemoryPool::_inst nullptr; 优点 1、一个程序中有多个单例并且有先后创建初始化顺序要求时懒汉模式可以控制能够控制初始化顺序。2、不影响启动速度。 缺点1、相对复杂。2、线程安全问题要处理好。 如果单例对象构造十分耗时或者占用很多资源比如加载插件啊 初始化网络连接啊读取 文件啊等等而有可能该对象程序运行时不会用到那么也要在程序一开始就进行初始化 就会导致程序启动时非常的缓慢。 所以这种情况使用懒汉模式延迟加载更好。 3、单例对象的释放问题 1、一般情况下单例对象不需要释放。因为一般整个程序运行期间都会用到它。单例对象在进程结束后也会资源释放。 2、有些特殊场景需要释放。实现一个内嵌的垃圾回收类。 二、设计一个不能被拷贝的类 拷贝只会放生在两个场景中拷贝构造函数以及赋值运算符重载因此想要让一个类不能被拷贝只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 class A { public:A(){}~A(){}A(const A) delete;A operator(const A) delete;private:int _a 1; };int main() {A a1;A a2(a1);return 0; } 三、设计一个只能在堆上创建对象的类 实现方式 1、将类的构造函数或者析构函数私有拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。 2、提供一个静态的成员函数在该静态成员函数中完成堆对象的创建或析构。 析构函数私有 class HeapOnly { public:static void Delete(HeapOnly* hp){delete hp;} private:~HeapOnly(){} private:int _a; };int main() {HeapOnly hp1;static HeapOnly hp2;HeapOnly* ptr new HeapOnly;HeapOnly::Delete(ptr); } 构造函数私有 class HeapOnly { public:static HeapOnly* CreatHeapOnly(){return new HeapOnly;}HeapOnly(const HeapOnly p) delete;HeapOnly operator(const HeapOnly p) delete; private:HeapOnly(){} private:int _a; };int main() {HeapOnly hp1;static HeapOnly hp2;HeapOnly* ptr HeapOnly::CreatHeapOnly();delete ptr; } 四、设计一个只能在栈上创建对象的类 将构造函数私有化然后设计静态方法创建对象返回即可。 class StackOnly { public:static StackOnly CreateObj(){return StackOnly();}// 禁掉operator new可以把下面用new 调用拷贝构造申请对象给禁掉// StackOnly obj StackOnly::CreateObj();// StackOnly* ptr3 new StackOnly(obj);void* operator new(size_t size) delete;void operator delete(void* p) delete; private:StackOnly() :_a(0){} private:int _a; }; 五、设计一个不能被继承的类 1、构造函数私有化派生类中调不到基类的构造函数。则无法继承。 class A { public:static A GetA(){return A();} private:A(){}int _a 1; };class B :public A { public:B(){} private:int _b 2; };int main() {B b;return 0; } 2、使用关键字 final final关键字final修饰类表示该类不能被继承。 class A  final {// .... };
http://www.hkea.cn/news/14414975/

相关文章:

  • 怎样选择网站的关键词网站建设与维护学什么科目
  • 二手网站排名wordpress 发卡插件
  • 新开传奇网站发布网孞seo按天计费系统定制
  • 在建设银行网站申请完信用卡吗做装修效果图的网站有哪些软件下载
  • 自己做网站需要什么软件聚享游网站如何做推广
  • 扁平式网站模板上海小程序开发定制
  • 个人静态网站wordpress实例网站
  • 网站开发培训学校十堰小程序开发
  • 二手书哪个网站做的好淘客网站做的好的
  • 软件公司网站模版做机械配件的网站
  • 老干支部网站建设方案怎样做医院网站
  • 庆阳市建设局网站设计一个网站报价
  • 中卫网站定制开发价格it培训
  • 做网站找那家公司好域名ip查询查网址
  • iis网站模板淘宝网页版入口官网
  • 中国十大品牌网站西宁网站系统建设
  • 网站建设需要提供哪些材料腾讯小程序怎么制作
  • 建立网站的技术网页个人主页设计
  • 建设门户网站都需要什么意思手机商城 手机网站建设
  • 大连建设工程设计院有限公司网站网页设计的步骤有哪些
  • 三星单片机开发网站网页设计是什么概念
  • 网站开发专家:php+mysql网站开发技术与典型案例导航牡丹江地区做网站的公司
  • 新手建网站网站建设不包括以下哪个阶段
  • 北辰网站建设公司太原网站制作做塑料哪个网站好
  • 网站设计息做网站充值微信必须是企业
  • 寺庙建设网站的意义泰兴网站制作
  • 企业网站管理系统站长之家网络营销管理办法
  • 教学设计代做去什么网站西安网络推广公司大全
  • 湘潭自适应网站建设 磐石网络自己做网站系统
  • 新浪云计算 网站开发佛山正规网站建设哪家好