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

找人 做网站 一般注意展示用网站

找人 做网站 一般注意,展示用网站,天元建设集团有限公司怎么样,网站建设优化服务好么23种设计模式之C++实践 1. 简介2. 基础知识3. 设计模式(一)创建型模式1. 单例模式——确保对象的唯一性1.2 饿汉式单例模式1.3 懒汉式单例模式比较IoDH单例模式总结2. 简单工厂模式——集中式工厂的实现简单工厂模式总结3. 工厂方法模式——多态工厂的实现工厂方法模式总结4.… 23种设计模式之C++实践 1. 简介2. 基础知识3. 设计模式(一)创建型模式1. 单例模式——确保对象的唯一性1.2 饿汉式单例模式1.3 懒汉式单例模式比较IoDH单例模式总结 2. 简单工厂模式——集中式工厂的实现简单工厂模式总结 3. 工厂方法模式——多态工厂的实现工厂方法模式总结 4. 抽象工厂模式——产品族的创建抽象工厂模式总结 5. 原型模式——对象的克隆原型模式总结 6. 建造者模式——复杂对象的创组装与创建建造者模式总结 1. 简介 设计模式是一门技术,更是一门艺术,它为构建可维护性和可复用性俱佳的软件而诞生。 2. 基础知识 设计模式(Design Pattern):是一套被反复使用的,多数人知晓的,经过分类编目的代码设计经验的总结,使用设计模式是为了可以重用代码,让代码更容易被理解并提高代码的可靠性。UML(United Modeling Language): 类 关联关系(实线):通常将一个类的对象作为另一个类的成员变量。 双向关联单向关联自关联多重性关联 聚合关系(空心菱形直线):成员是整体的一部分,但是成员可以脱离整体存在。通常通过set()函数初始化成员变量。组合关系(实心菱形直线):整体控制成员的声明周期,整体不存在,则成员不存在。通常通过构造函数初始化成员变量。依赖关系(带箭头虚线):类的改变影响到使用该类的其他类,则其他类依赖该类。通常通过将一个类的对象作为另一个类中方法的参数体现。泛化关系/继承关系(空心三角形实线):父类与子类。接口与实现关系(空心三角形虚线):在接口类中声明抽象函数,在实现类中实现函数。 面向对象设计原则: 单一职责原则(Single Responsibility):一个类只负责一个功能领域中的相应职责。或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。高内聚,低耦合。开闭原则(Open-Closed Principle,OCP):一个软件实体应该对外扩展开放,对修改关闭。即软件实体尽量在不修改原有代码的基础下进行扩展。抽象化。里氏代换原则(Liskov Substitution Principle,LSP):所有引用父类的地方必须能透明地使用其子类的对象。父类抽象化依赖倒转原则(Dependency Inversion Principle,DIP):抽象不应该依赖于细节,细节应该依赖于抽象。即针对接口编程,而不是针对实现编程。参数抽象化。接口隔离原则(Interface Segregation Principle,ISP):使用多个专用的接口,而不适用单一的总接口,即客户端不应该依赖那些它不需要的接口。合成复用原则(Composite Reuse Principle,CRP):尽量使用对象组合,而不是继承来达到复用的目的。迪米特法则/最少知识原则(Law of Demeter/Least Knowledge Principle,LoD/LKP):一个软件实体应该尽可能少的与其他实体发生相互作用。 3. 设计模式 (一)创建型模式 1. 单例模式——确保对象的唯一性 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类成为单例类,它提供全局访问的方法。 要点: 某个类只能有一个实例 它必须自行创建这个实例 它必须自行向整个系统提供这个实例 结构图: 使用场景实例 Windows任务管理器 在一个Windows系统中,任务管理器存在唯一性。 代码实例 // TaskManager.h class TaskManager {private:/*** @brief 初始化窗口**/TaskManager() {}public:/*** @brief 显示进程**/void displayProcesses();/*** @brief 显示服务**/void displayServices();private:static TaskManager* tm;public:static TaskManager* getInstance(); };// TaskManager.cpp TaskManager* TaskManager::tm = nullptr;void TaskManager::displayProcesses() {printf("显示进程……\n");return; } void TaskManager::displayServices() {printf("显示服务……\n");return; }TaskManager* TaskManager::getInstance() {if (tm == nullptr) {tm = new TaskManager();}return tm; }代码测试 测试代码: int main(int argc, char** argv) {printf("I'm Singleton Pattern!\n");// begin testSingleTonNS::TaskManager* tm = SingleTonNS::TaskManager::getInstance();tm-displayProcesses();tm-displayServices();// end testreturn 0; }输出 I’m Singleton Pattern! 显示进程…… 显示服务…… 1.2 饿汉式单例模式 饿汉式单例模式(Eager Singleton):在定义静态变量的时候实例化单例类,因此在类加载时就已经创建了单例对象 结构图 代码示例 // TaskManager.hclass TaskManager {private:/*** @brief 初始化窗口**/TaskManager() {}public:/*** @brief 显示进程**/void displayProcesses();/*** @brief 显示服务**/void displayServices();private:static TaskManager* tm;public:static TaskManager* getInstance();};// TaskManager.cpp// 饿汉式单例模式初始化TaskManager* TaskManager::tm = new TaskManager();void TaskManager::displayProcesses() {printf("显示进程……\n");return;}void TaskManager::displayServices() {printf("显示服务……\n");return;}TaskManager* TaskManager::getInstance() {return tm;}1.3 懒汉式单例模式 见单例模式实现方式。比较 饿汉式单例类 优点 无需考虑多线程访问问题,可以确保实例的唯一性 调用速度与反应时间更快 缺点 资源利用效率更低 加载时间更长 懒汉式单例类 优点 延迟加载,无需一直占用系统资源 缺点 必须处理好多线程同时访问的问题,可能引起性能受影响 IoDH 有没有一种方法,能够将两种单例的缺点都克服,而将两者的优点合二为一呢?答案是肯定的,即Initialization on Demand Holder技术IoDH:在单例类中增加一个静态内部类,在该内部类中,创建单例对象,再将该单例对象通过getInstance()方法返回给外部使用。使用IoDH,既可以实现延迟加载,又可以保证线程安全,不影响系统性能,但是与编程语言本身的特性相关,很多面向对象语言不支持IoDH,例如C++。支持的语言有Java。单例模式总结 优点 提供了对唯一实例的受控访问。节约系统资源允许可变数目的实例。 缺点 没有抽象层,扩展较为困难职责过重,一定程度上违反了单一职责原则。很多面向对象语言(例如Java,C#)的运行环境都提供了自动垃圾回收技术,因此,如果实例化的共享对象长期不被利用,会自动销毁并回收资源,下次利用时重新实例化,这将导致共享的单例对象状态的丢失。 适用场景 系统只需要一个实例对象客户调用类的单个实例只允许使用一个公共访问点。 2. 简单工厂模式——集中式工厂的实现 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建类的实例通常具有共同的父类。 要点: 当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。 结构图: 适用场景实例 图标库:为应用系统提供各种不同外观的图表,例如柱状图、饼状图、折线图等等 代码示例 // Chart.h /*** @brief 图表类接口**/ class Chart {public:virtual void display() = 0; };/*** @brief 柱状图**/ class HistogramChart : public Chart {public:HistogramChart();void display() override; };/*** @brief 饼状图**/ class PieChart : public Chart {public:PieChart();void display() override; };/*** @brief 折线图**/ class LineChart : public Chart {public:LineChart();void display() override; };// ChartFactory.h class ChartFactory {public:static Chart* getChart(std::string type); };// Chart.cpp HistogramChart::HistogramChart() { printf("创建柱状图!\n"); }void HistogramChart::display() {printf("展示柱状图!\n");return; }PieChart::PieChart() { printf("创建饼状图!\n");
http://www.hkea.cn/news/14363469/

相关文章:

  • 做网站切图的原则是什么建物流网站
  • 云端做效果图的网站互联网公司排名2014
  • 民宿网站建设方案在线解压zip网站
  • 备案上个人网站和企业网站的区别做医疗器械网站
  • 宝安做网站的公司网站旁边的小图标怎么做的
  • 网站底部图片代码大连制作网站公司
  • 网站建设一个人wordpress模板开发 2016
  • 西城网站制作公司电商平台建站
  • 建设项目备案网站管理系统优化公司治理
  • 做老电影网站侵权吗网站的开发包括什么东西
  • 网站制作公司都找乐云seo在线设计平台用户规模
  • 制作网站软件用什么语言为什么不要做外包员工
  • 东莞seo建站费用wordpress 自动 图片
  • 富阳网站建设公司装修公司报价
  • 中国住建厅网站官网wordpress iis10
  • 池州城乡住房建设厅网站网站服务器租用价格一般多少钱?
  • 深圳网站seo推广麻辣烫配方教授网站怎么做
  • 网站建设技术哪个好wordpress调用js函数
  • 南京专业做网站怎样做支付网站
  • 发布文章后马上更新网站主页pc端网站建设价格明细表
  • 庆阳网站网站建设房屋装修在线设计网站
  • 招商网站设计xxx网站建设策划书范文
  • 克拉玛依建设局网站6wordpress菜单字变小
  • 北京cms建站模板南昌网站开发多少钱
  • 旅游网站wordpress深圳网络营销全网推广
  • 做网站要找什么公司深圳全网营销推广平台
  • 机械网站怎么做重庆市建设工程信息网打不开是怎么回事
  • 触摸屏网站建设iis网站管理助手
  • wap版网站 加app提示wordpress 多主题共存
  • 博客发布 网站模版网站网页区别