当前位置: 首页 > 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.dnsts.com.cn/news/136389.html

相关文章:

  • 河西网站建设网站的文件夹结构
  • 北京网站建设 seo公司哪家好迈若网站建设
  • 网站只做南昌定制网站公司
  • 网站架构分析工具网上给别人做网站
  • asp网站乱码电商论坛网站模板
  • 网站管理员作用济南建网站公司
  • php微信微网站怎么做网站后台生成静态页面
  • wan网站建设wordpress 代码 翻译
  • 怎么样自己做网站接订单垂直门户网站建设
  • 如何找到网站是谁做的wordpress tag 别名
  • 电商网站的建设与安全gta5买房网站正在建设
  • 吉林省建设厅证件查询网站济南网站建设公司哪个好
  • 做网站首选什么语言神马seo教程
  • 中为网站建设百度站长平台快速收录
  • 做公司网站 需要注意什么网站建设和挂标情况清理表
  • wap商城网站模板素材wordpress模版c2c商城
  • 电子商务网站开发目的和意义百度推广登录网站
  • “一个”网站服务器租用公司
  • 横向网站百度系app有哪些
  • 网站主题旁边的图标怎么做建程网招工信息
  • 启东 网站开发昆明网建
  • 做网站业务的怎么寻找客户东城免费做网站
  • 展示型商城订单网站建设网站首页被k 做跳转
  • 做网站导航按钮怎么猛网站建立好如何做seo
  • 凤城市网站建设网站开发报告步骤分析
  • 企业网站的建立的目的傻瓜式做网站软件
  • 网站主页面设计南宁制作营销型网站
  • 什么做的网站吗永康医院网站建设
  • 绍兴市建设局网站建设网站 织梦
  • 展厅网站门户类网站备案