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

漂亮的手机网站模板游戏网站模板

漂亮的手机网站模板,游戏网站模板,怎么免费建公司网站,深圳网站制作公司资讯代理模式是很常见的设计模式#xff0c;即使没有专门学习过这种设计模式#xff0c;在工作中也一定用过这种设计模式。在实际生活中#xff0c;代理模式也是常见的#xff0c;比如内阁首辅相对于皇帝#xff0c;前者是后者的代理#xff0c;内阁首辅收到奏折时#xff0…代理模式是很常见的设计模式即使没有专门学习过这种设计模式在工作中也一定用过这种设计模式。在实际生活中代理模式也是常见的比如内阁首辅相对于皇帝前者是后者的代理内阁首辅收到奏折时往往也要做一些预处理和后处理。 当我们需要给原始类增加一些功能、日志、性能监控时通过修改原始类当然是可以实现的但是这样就侵入了原来的逻辑违背了开闭原则。并且新增的功能与原有的功能本来就属于不同范畴的功能。 在不修改原始类的基础上增加新的功能就需要用到代理模式。有些类也是无法修改的这种情况下只能使用代理模式。 在平时的开发中为了代码使用方便我们往往会对一些原始的接口进行封装。在原始接口的基础上增加一些功能或者日志。这样我们在使用对应功能的时候就可以直接使用我们封装的接口而不是原始接口这就是代理模式。 如下是在std::thread的基础上封装的Thread类通过该类可以设置线程的名字。为了在创建线程的时候指定线程的名字封装了Thread类Thread可以看作std::thread的代理类。 #include iostream #include thread #include unistd.hclass Thread {public:template class Function, class... ArgsThread(std::string const name, Function f, Args... args) noexcept: internal_(std::forwardFunction(f), std::forwardArgs(args)...) {set_name(name);}virtual ~Thread() noexcept {if (internal_.joinable()) {internal_.join();}}bool joinable() const noexcept { return internal_.joinable(); }void join() {if (joinable()) {internal_.join();}}std::thread::native_handle_type native_handle() noexcept { return internal_.native_handle(); }private:void set_name(std::string const name) noexcept {if (!name.empty()) {uint64_t const thread_name_max{15};if (name.length() thread_name_max) {pthread_setname_np(native_handle(), name.substr(0, thread_name_max).c_str());} else {pthread_setname_np(native_handle(), name.c_str());}}}private:std::thread internal_;};int main() {Thread t(testthread, [](){std::cout thread enter\n;sleep(10);std::cout thread exit\n;});t.join();return 0; }1静态代理  静态代理就是针对一个原始类实现一个代理类这个代理类只能对这一个原始类起到代理的作用。如下代码是代理模式的典型使用方式代理类与原始类实现相同的接口代理类中有一个属性是原始类。 #include iostream// 接口 class Subject { public:virtual void Request() const 0;virtual ~Subject() default; };// 原始类 class RealSubject : public Subject { public:void Request() const override {std::cout RealSubject: 处理请求 std::endl;} };// 代理类 class Proxy : public Subject { private:RealSubject* real_subject_;public:Proxy() : real_subject_(new RealSubject()) {}~Proxy() {delete real_subject_;}void Request() const override {std::cout Proxy: 预处理请求 std::endl;real_subject_-Request();std::cout Proxy: 后续处理 std::endl;} };int main() {Proxy proxy;proxy.Request();return 0; }2动态代理 使用静态代理如果原始类很多的话那么针对每一个原始类都要实现一个代理类这样会造成类的数量成倍的增加。为了解决这个问题出现了动态代理。 如下代码是动态代理的例子动态代理类是一个类模板该代理类代理的是那个类通过模板参数指定。原始类、预处理函数、后处理函数均通过构造函数的的参数进行传递。 #include iostream #include functional #include memory// 抽象类 class IComponent { public:virtual void Operation() 0;virtual ~IComponent() default; };// 原始类 class ConcreteComponent : public IComponent { public:void Operation() override {std::cout ConcreteComponent: 核心操作 std::endl;} };// 代理类 template typename T class DynamicProxy : public IComponent { private:std::unique_ptrT target_;std::functionvoid() pre_handler_;std::functionvoid() post_handler_;public:DynamicProxy(std::unique_ptrT target,std::functionvoid() pre,std::functionvoid() post): target_(std::move(target)),pre_handler_(pre),post_handler_(post) {}void Operation() override {// 前置处理if (pre_handler_) pre_handler_();// 委托调用target_-Operation();// 后置处理if (post_handler_) post_handler_();} };int main() {// 创建动态代理可运行时配置auto proxy std::make_uniqueDynamicProxyConcreteComponent(std::make_uniqueConcreteComponent(),[]() { std::cout DynamicProxy: 预处理 std::endl; },[]() { std::cout DynamicProxy: 后续处理 std::endl; });proxy-Operation();return 0; }
http://www.dnsts.com.cn/news/45467.html

相关文章:

  • 网站域名购买大型手游网络游戏排行榜前十
  • 给别人做网站挣钱么百度识图网页入口
  • wordpress 站长工具源码海外购物网站哪个最好
  • 长沙网站推广和优化招远网站建设价格
  • 辛巴否认电商干垮实体大连做网站优化公司
  • eclipse开发微网站开发网站后台登陆图片
  • 免费网站成品深圳广告宣传片拍摄
  • 建网站需要什么东西wordpress开启多站点功
  • 网站开发专业培训合肥网站建站建设
  • 新吴区住房和城乡建设部网站手机屏幕网站
  • 网页搜索怎么设置信息流优化师是做什么的
  • 外国建筑设计网站服装logo创意设计
  • 东营远见网站建设公司云南城市建设职业学校官方网站
  • 建站教程图解seo提升排名技巧
  • 哪些网站是用jsp做的深圳高端网站建设网页设计
  • 广东省住房和城乡建设网站无锡做网站好
  • 个人商城网站制作费用小型电商平台
  • 中国建设网站的公司wordpress编辑者无法上传图片
  • 深圳做网站那家公司好企业网站优化包括哪三个方面
  • 学做饼干的网站wordpress调用自定义菜单
  • 设计制作小车的基本步骤是seo搜索引擎优化技术
  • 新手怎么搭建网站wordpress 导航菜单 居中
  • 网站设计一般会遇到哪些问题python如何建网站建设
  • asp化妆品网站邢台提供网站建设公司电话
  • 网站更新内容怎么做古镇 网站建设
  • 装修设计网站哪个最好专门做排行的网站
  • 网站开发流程分为哪几个阶段展台展览
  • 个人网站模板素材下载手机软件定制开发公司
  • 江西省住房建设厅统计网站深圳英文网站制作
  • 建行网站关于我们爱爱做网站