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

网站做seo的好处京东网上购物官方网站

网站做seo的好处,京东网上购物官方网站,logo制作网站免费,北京网站优化公司外观模式是一种结构型设计模式,它为复杂的子系统提供了一个简化的接口。这种模式定义了一个高层接口,使得子系统更容易使用。外观模式的特点简化接口:为复杂的子系统提供统一的简单接口解耦:将客户端与子系统解耦,降低…

外观模式是一种结构型设计模式,它为复杂的子系统提供了一个简化的接口。这种模式定义了一个高层接口,使得子系统更容易使用。

外观模式的特点

  1. 简化接口:为复杂的子系统提供统一的简单接口

  2. 解耦:将客户端与子系统解耦,降低依赖性

  3. 易用性:使子系统更易于使用和理解

典型应用场景

  1. 复杂子系统需要简化接口时

  2. 需要将子系统组织成层次结构时

  3. 构建多层系统时,外观可以作为每层的入口点

  4. 遗留系统集成时提供统一接口

C++ 示例程序

示例1:计算机启动过程

#include <iostream>// 子系统类:CPU
class CPU {
public:void freeze() { std::cout << "CPU freeze\n"; }void jump(long position) { std::cout << "CPU jump to " << position << "\n"; }void execute() { std::cout << "CPU execute\n"; }
};// 子系统类:内存
class Memory {
public:void load(long position, const std::string& data) {std::cout << "Memory load at " << position << ": " << data << "\n";}
};// 子系统类:硬盘
class HardDrive {
public:std::string read(long lba, int size) {std::cout << "HardDrive read " << size << " bytes from " << lba << "\n";return "BOOT_DATA";}
};// 外观类:计算机
class ComputerFacade {
private:CPU cpu;Memory memory;HardDrive hardDrive;static const long BOOT_ADDRESS = 0x7C00;static const long BOOT_SECTOR = 0;static const int SECTOR_SIZE = 512;public:void start() {std::cout << "Computer starting...\n";cpu.freeze();std::string bootData = hardDrive.read(BOOT_SECTOR, SECTOR_SIZE);memory.load(BOOT_ADDRESS, bootData);cpu.jump(BOOT_ADDRESS);cpu.execute();std::cout << "Computer started successfully\n";}
};// 客户端代码
int main() {ComputerFacade computer;computer.start();return 0;
}

示例2:家庭影院系统

#include <iostream>
#include <string>// 子系统类:投影仪
class Projector {
public:void on() { std::cout << "Projector on\n"; }void off() { std::cout << "Projector off\n"; }void wideScreenMode() { std::cout << "Projector in widescreen mode\n"; }
};// 子系统类:DVD播放器
class DvdPlayer {
public:void on() { std::cout << "DVD Player on\n"; }void off() { std::cout << "DVD Player off\n"; }void play(const std::string& movie) {std::cout << "DVD Player playing \"" << movie << "\"\n";}void stop() { std::cout << "DVD Player stopped\n"; }
};// 子系统类:音响系统
class Amplifier {
public:void on() { std::cout << "Amplifier on\n"; }void off() { std::cout << "Amplifier off\n"; }void setVolume(int level) { std::cout << "Amplifier volume set to " << level << "\n"; }
};// 子系统类:灯光控制
class TheaterLights {
public:void dim(int level) { std::cout << "Theater lights dimmed to " << level << "%\n"; }void on() { std::cout << "Theater lights on\n"; }
};// 外观类:家庭影院
class HomeTheaterFacade {
private:Amplifier amp;DvdPlayer dvd;Projector projector;TheaterLights lights;public:void watchMovie(const std::string& movie) {std::cout << "Get ready to watch a movie...\n";lights.dim(10);amp.on();amp.setVolume(5);projector.on();projector.wideScreenMode();dvd.on();dvd.play(movie);}void endMovie() {std::cout << "Shutting movie theater down...\n";lights.on();amp.off();dvd.stop();dvd.off();projector.off();}
};// 客户端代码
int main() {HomeTheaterFacade theater;theater.watchMovie("The Matrix");std::cout << "\nEnjoy the movie...\n\n";theater.endMovie();return 0;
}

示例3:编译器子系统

#include <iostream>
#include <string>
#include <vector>// 子系统类:扫描器
class Scanner {
public:std::vector<std::string> scan(const std::string& source) {std::cout << "Scanning source code...\n";// 简化的扫描过程return {"token1", "token2", "token3"};}
};// 子系统类:解析器
class Parser {
public:void parse(const std::vector<std::string>& tokens) {std::cout << "Parsing tokens...\n";// 简化的解析过程}
};// 子系统类:代码生成器
class CodeGenerator {
public:void generateCode() {std::cout << "Generating object code...\n";// 简化的代码生成过程}
};// 子系统类:优化器
class Optimizer {
public:void optimize() {std::cout << "Optimizing code...\n";// 简化的优化过程}
};// 外观类:编译器
class CompilerFacade {
private:Scanner scanner;Parser parser;CodeGenerator codeGen;Optimizer optimizer;public:void compile(const std::string& source) {std::cout << "Compilation started\n";auto tokens = scanner.scan(source);parser.parse(tokens);codeGen.generateCode();optimizer.optimize();std::cout << "Compilation completed successfully\n";}
};// 客户端代码
int main() {CompilerFacade compiler;compiler.compile("int main() { return 0; }");return 0;
}

总结

外观模式通过提供一个简化的接口来隐藏系统的复杂性,使得客户端代码更加简洁和易于维护。它特别适用于以下情况:

  1. 当需要为复杂的子系统提供一个简单的接口时

  2. 当客户端与抽象类的实现之间存在很大的依赖性时

  3. 当需要将子系统分层时,可以使用外观模式来定义每层的入口点

外观模式并不禁止客户端直接访问子系统类,它只是提供了一个更方便的入口点。在实际应用中,外观模式经常与其他设计模式如单例模式、工厂模式等结合使用。

http://www.dtcms.com/a/582436.html

相关文章:

  • 网站的风格设计下载了wordpress然后怎么用
  • 网站开发用的开源系统龙华在深圳算什么档次
  • 正确使用玛伐凯泰(Mavacamton)治疗梗阻性肥厚型心肌病的剂量间隔
  • ViDoRAG详解:多模态文档检索增强生成框架的革命性突破
  • 玉溪做网站建设的公司昆明网站设计都需要设计什么
  • 计算机关于网站开发的证书关于申请网站建设的报告
  • 获取DPI、设置进程DPI感知(C++源码)
  • 时间序列图的“性能陷阱”:Highcharts “金融级”优化方案
  • 网站开发的方法和步骤网站构成的作用是什么
  • 6、prometheus资源规划
  • 淄博哪有做网站的wordpress无头像
  • 在 DigitalOcean GPU 云服务上使用 LangChain 构建Serverless AI 应用
  • 【生活技术分享】基于“稀释-增香”原理的波特酒风味优化方案
  • 如何做国外假发网站优秀的图片设计网站
  • C++笔记-23-类和对象-多态
  • 网站开发有哪些方向微信小程序开通要钱吗
  • 网站开发技术架构南京网站设计平台
  • CSS 导航栏
  • html5 网站正在建设中网页设计 html
  • 拓扑排序深入
  • docker部署kafka
  • 【镜中异客:AI与人类的禁忌之舞】
  • 微信网站模版下载新闻类网站源码
  • 手机网站滑动效果深圳一公司今年成立16家核检机构
  • 面向强化学习的状态空间建模:RSSM和PyTorch(3)
  • #Prometheus 权威指南:云原生监控的技术架构与实践精髓
  • Android11-Launcher3 定制-去除副屏幕-可以滑动效果
  • 通风管道部件-图形识别更快捷
  • 黄浦网站制作那个网站可以做雪花特效
  • 万网站底部添加备案号wordpress如何更换主机