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

网站建设案例哪家好青岛建网站需要花多少钱

网站建设案例哪家好,青岛建网站需要花多少钱,网站单页站群,旅行社网站建设规划书1.简介 1.1单例模式 C单例模式被广泛应用于需要全局唯一实例的场景。以下是一些常见的使用场景#xff1a; 日志记录器 在大多数应用程序中#xff0c;需要一个全局的日志记录器来记录系统运行时的事件和错误。使用单例模式可以确保只有一个日志记录器实例#xff0c;并能…1.简介 1.1单例模式 C单例模式被广泛应用于需要全局唯一实例的场景。以下是一些常见的使用场景 日志记录器 在大多数应用程序中需要一个全局的日志记录器来记录系统运行时的事件和错误。使用单例模式可以确保只有一个日志记录器实例并能够在整个应用程序中共享和访问。 数据库连接池 数据库连接是有限且昂贵的资源为了避免频繁地创建和销毁连接可以使用单例模式来管理数据库连接池。这样可以确保在应用程序中只有一个连接池实例并且可以在需要时轻松获取数据库连接。 配置管理器 配置管理器负责加载和管理应用程序的配置信息例如数据库连接字符串、日志级别等。通过单例模式可以确保只有一个配置管理器实例并能够在整个应用程序中统一访问配置信息。 全局对象管理器 在某些应用程序中可能存在需要全局访问的对象例如全局事件管理器、全局资源管理器等。使用单例模式可以确保这些全局对象只有一个实例并能够在整个应用程序中方便地进行访问和使用。 线程池 线程池用于管理和调度多个线程执行任务通过单例模式可以确保只有一个线程池实例并能够在整个应用程序中灵活地进行任务分发和执行。 这些只是一些常见的使用场景实际上单例模式可以适用于任何需要一个全局唯一实例的情况。但是需要注意的是单例模式可能会带来全局共享状态的问题因此在使用单例模式时需要仔细考虑其潜在的风险和副作用。同时还要记住在多线程环境中使用单例模式需要考虑线程安全性。 1.2 原型模式 原型模式是一种通过复制现有对象来创建新对象的设计模式。它使用一个原型对象作为创建对象的样板通过克隆原型对象来生成新的对象而不是使用传统的实例化过程。       原型模式的核心思想是使用已有对象作为原型通过复制克隆这个原型来创建新的对象而不是通过传统的实例化方式。这种方式允许我们在运行时动态地创建对象并且可以避免耗费时间和资源去重新初始化对象。 1.3 比喻-手机原型机和量产机 原型模式和单例模式可以这样比喻我们要制作一款手机 原型模式比喻为手机的制作过程中我们先制作一个原型机并通过复制原型机来制造更多的手机。原型机是一个已经设计好的模板我们可以根据它来制造新的手机而每个手机都可以独立使用和修改。这样我们可以根据原型机的特性和功能来扩展和修改手机从而得到多个不同的手机实例。 单例模式比喻为手机的制造过程中我们只允许制造一台手机这台手机成为该品牌的唯一代表。无论是在什么地方我们都只能获得并使用这一台手机。这样做的好处是我们可以保证这台手机的唯一性避免资源浪费并且方便全局访问。 2.单例的简单实现 class SysParaData : { public:static SysParaData instance(){static SysParaData self;return self;}private:SysParaData();~SysParaData();SysParaData(const SysParaData self);const SysParaData operator(const SysParaData self); }; 这里用单例模式定义了一个全局只有一个的数据参数类用来存储全局的参数。 在类中instance()是一个公共的静态成员函数用于返回SysParaData类的唯一实例。这个函数通过局部静态变量self来实现在第一次调用instance()函数时创建实例。由于局部静态变量在函数退出后仍然存在所以每次调用instance()函数都会返回同一个实例。 同时构造函数、析构函数、拷贝构造函数和赋值运算符被声明为私有这意味着不能从类的外部直接实例化、销毁、复制或赋值SysParaData对象。这样可以确保只有instance()函数可以创建和访问SysParaData类的唯一实例。 单例模式的优点之一是可以提供全局唯一的对象访问点方便在程序中的任何地方使用该对象。通过调用SysParaData::instance()函数可以获得对SysParaData类的唯一实例的引用。 注意这里没有进行多线程安全的处理。如果在多线程环境中使用该单例模式可能需要额外的线程同步措施以确保线程安全。例如使用互斥锁或其他线程同步机制来保护实例的创建和访问过程。 3.原型模式的简单实现 // 原型类 class SysParaModifyDataBase { public:virtual SysParaModifyDataBase *Clone() 0; };// class SysParaModifyData: public SysParaModifyDataBase { public:SysParaModifyData()virtual Prototype *Clone(){return new SysParaModifyData(*this);}int data 1; };SysParaModifyDataBase *dataSource new SysParaModifyData(); SysParaModifyDataBase *dataModify dataSource -Clone(); 4.原型模式和单例模式的结合 class SysParaData { private:static SysParaData *instance; public:/* 禁止拷贝构造函数 禁止拷贝赋值运算符的另一种写法 与上面单例代码设为私有效果一样 */SysParaData (const SysParaData ) delete;SysParaData operator(const SysParaData ) delete;/* 单例实例的另一种写法 */static SysParaData *getInstance() {if (instance nullptr) {instance new SysParaData ();}return instance;}void setName(const std::string newName) {name newName;}std::string getName() const {return name;}SysParaData *clone() const {SysParaData *cloneInstance new SysParaData ();cloneInstance-setName(this-name);return cloneInstance;} }; 如果使用clone()方法克隆一个SysParaData对象并使用该克隆对象调用setName()修改名称那么原始的单例对象将不受影响它们是相互独立的。因此克隆对象和原始单例对象不再是同一个单例。 单例模式的规则是一个类只能有一个实例并且通过getInstance()方法获取单例实例。在这个例子中我们使用静态变量instance来存储唯一的单例实例而且通过禁止拷贝构造函数和拷贝赋值运算符的使用来确保只有一个实例。克隆方法clone()是为了使用已有的单例对象来创建新的对象实例。 被克隆之后的对象如果不使用clone()方法创建而是直接使用单例对象的指针进行赋值或传递那么它们仍然是指向同一个单例的指针。 例如 SysParaData *singleton SysParaData::getInstance(); SysParaData *cloneInstance singleton-clone(); // 克隆单例对象SysParaData *directAssignment singleton; // 直接赋值 SysParaData *functionParameter cloneInstance; // 作为函数参数传递// 修改单例对象的名称 singleton-setName(Singleton);// 输出对象的名称 std::cout Singleton Name: singleton-getName() std::endl; std::cout Direct Assignment Name: directAssignment-getName() std::endl; std::cout Function Parameter Name: functionParameter-getName() std::endl;输出结果将会是 Singleton Name: Singleton Direct Assignment Name: Singleton Function Parameter Name: Cloned Instance可以看到直接赋值或作为函数参数传递的对象指针仍然指向同一个单例对象因此它们的名称相同。只有通过clone()方法创建的对象是一个独立的克隆实例它们和原始单例对象是不同的。 因此被克隆之后的对象如果不使用clone()方法创建而是直接使用单例对象的指针进行赋值或传递仍然是指向同一个单例实例因此仍然是单例。 5.总结 当原型模式与单例模式结合在一起时可以实现一个可以克隆的单例。 在传统的单例模式中类只能有唯一的一个实例并且使用静态方法获取该实例。而在原型模式中可以通过复制原型对象来创建新的对象实例。 当将这两种模式结合在一起时通过克隆原型对象可以创建多个具有相同属性和行为的实例同时保持单例的特性即每次克隆都得到同一个实例。 这种结合模式的应用场景是当希望在单例基础上创建新的对象实例这些新实例保持与原始实例相同的初始状态并且这些实例之间相互独立。 使用这种结合模式可以方便地创建多个独立且具有相同初始状态的对象同时避免了在使用时传递参数的麻烦。它提供了更大的灵活性和可扩展性同时仍然保持了单例的特性。 注意此结合模式的实现需要对原型对象进行深度拷贝以确保每个克隆对象是独立的。否则如果使用浅拷贝所有克隆对象将共享同一个状态这不符合原型模式的预期。
http://www.pierceye.com/news/408436/

相关文章:

  • 西充县住房和城乡建设局网站深圳建设局网站打不开
  • 深圳常平网站建设制作公司网站开发qq群
  • 校园网站建设的感受论文专业微信网站建设公司首选
  • 国外免费logo设计网站免费网课平台
  • 高端网站设计定制公司页面跳转自动更新
  • 项目建设资金来源网站网站开发技术可以做什么工作
  • 可做易企秀的网站网页建站网站
  • 南京网站建设价格大型网站开发协调
  • 园林景观设计公司点评的网站和论坛大型网站搜索怎么做的
  • 河南省建设教育培训中心网站广告机器设备的价格表
  • 郑州做网站哪家最好中国能源建设集团有限公司是什么级别
  • 品牌设计公司排行榜前十名seo外包服务公司
  • 潍坊网站建设 58wordpress 酒店预订
  • 个人网站主机选择电商公司官网
  • 名城苏州网站龙岗网站建设价位
  • 免费手机网站制作学做网站游戏教程
  • 什么企业做网站广州市公司网站建设
  • 无锡万度网站建设推广电影链接赚佣金
  • 电子商务网站建设与管理实训网页设计与网站建设基础心得体会
  • 托管的服务器如何做网站花店网站模板 html
  • 南宁保洁网站建设在线 代理 输入网址
  • 微站是什么意思快站app下载
  • 网站让女友做网站模特做网站好一点的软件
  • 苏州h5网站建设wordpress 数据库配置
  • 环保网站模板下载农村电商平台怎么加入
  • 教育企业重庆网站建设建设公司网站征集信息的通知
  • 广州做网站找哪家好成都装饰设计公司排名
  • 做头发个人网站制作素材copyright wordpress
  • 高埗镇网站仿做企业网站建设市场分析
  • 网站怎么加icowordpress 程序员主题