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

6做网站网站代码优化方案

6做网站,网站代码优化方案,制作团购网站,公司网站后缀解释说明:外观模式(Facade Pattern)又称为门面模式,属于结构型模式 Faade 为子系统中的一组接口提供了一个统一的高层接口,该接口使得子系统更加容易使用 外观(Facade)角色:为多个子系统对外提供…
解释说明:外观模式(Facade Pattern)又称为门面模式,属于结构型模式
Façade 为子系统中的一组接口提供了一个统一的高层接口,该接口使得子系统更加容易使用
外观(Facade)角色:为多个子系统对外提供一个共同的接口
子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它
优点:
对 Client 屏蔽子系统组件,减少了 Client 处理的对象数目,并使得子系统使用起来更加容易。通过引入外观模式,Client 的代码将变得很简单,与之关联的对象也很少。
实现了子系统与 Client 之间的松耦合关系,这使得子系统的组件变化不会影响到调用它的 Client,只需要调整 Facade 即可。
降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。一个子系统的修改对其他子系统没有任何影响,而且子系统内部变化也不会影响到外观对象。
只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类。
缺点:
不能很好地限制 Client 使用子系统类,如果对 Client 访问子系统类做太多的限制,则会减少可变性和灵活性。
在不引入抽象外观类的情况下,增加新的子系统可能需要修改 Facade 或 Client 的源代码,违背了“开闭原则”。
适用场景
当要为一个复杂子系统提供一个简单接口时。该接口可以满足大多数用户的需求,而且用户也可以越过外观类直接访问子系统。
Client 与多个子系统之间存在很大的依赖性。引入外观类将子系统与 Client 以及其他子系统解耦,可以提高子系统的独立性和可移植性。
在层次化结构中,可以使用外观模式定义系统中每一层的入口。层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。
#pragma once
#include <iostream>
#include <string>
#include <windows.h>
const std::string c_stateToStrCourier[] = { "收到", "验证可达性", "分配人员", "派送包裹", "获取交货确认", "完成" };
const std::string c_stateToStrVendor[] = { "收到", "确认库存", "从仓库得到物品", "包装", "联系快递员", "完成" };
const std::string c_stateToStrOrderTeam[] = { "收到", "确认付款", "联系供应商", "完成" };
const int c_nMsec = 300;  // 休眠时间(毫秒) - Sleep(c_nMsec) 处可以替换为一些有用的代码
// 订单团队
class OrderTeam
{
public:void submitRequest() {m_nState = 0;}// 检测状态bool checkStatus() {std::cout << "订单团队 - 当前状态:" <<  c_stateToStrOrderTeam[m_nState] << std::endl;Sleep(c_nMsec);m_nState++;return (m_nState == Complete);}
private:enum States {Received,  // 收到VerifyPayment,  // 确认付款ContactVendor,  // 联系供应商Complete  // 完成};int m_nState;
};
// 供应商
class Vendor
{
public:void submitRequest() {m_nState = 0;}// 检测状态bool checkStatus() {std::cout << "供应商 - 当前状态:" << c_stateToStrVendor[m_nState] <<  std::endl;Sleep(c_nMsec);m_nState++;return (m_nState == Complete);}
private:enum States {Received,  // 收到VerifyInventory,  // 确认库存GetItemFromWareHouse,  // 从仓库得到物品PackItem,  // 包装ContactCourier,  // 联系快递员Complete  // 完成};int m_nState;
};
// 快递员
class Courier
{
public:// 将请求转发给快递员void submitRequest() {m_nState = 0;}// 检测状态bool checkStatus() {std::cout << "快递员 - 当前状态:" << c_stateToStrCourier[m_nState]  << std::endl;Sleep(c_nMsec);m_nState++;return (m_nState == Complete);}
private:enum States {Received,  // 收到VerifyReachbility,  // 验证可达性AssignPerson,  // 分配人员DispatchPackage,  // 派送包裹GetDeliveryConfirmation,  // 获取交货确认Complete  // 完成};int m_nState;
};#pragma once
#include "sub_system.h"
// 网购外观
class OnlineShoppingFacade
{
public:OnlineShoppingFacade() {m_nCount = 0;}// 返回跟踪次数int followupNum() {return m_nCount;}// 提交订单void submitRequest() {m_nState = 0;}// 跟踪订单bool checkStatus() {// 收到订单请求switch (m_nState) {case Received:m_nState++;// 将请求转发给订单团队m_order.submitRequest();std::cout << "********** 提交给订单团队,跟踪次数:" <<  m_nCount << " **********" << std::endl;break;case SubmittedToOrderTeam:// 如果订单团队完成验证,则向供应商发出请求if (m_order.checkStatus()) {m_nState++;m_vendor.submitRequest();std::cout << "********** 提交给供应商,跟踪次数:" <<  m_nCount << " **********" << std::endl;}break;case SubmittedToVendor:// 如果供应商已将包裹打包,将其转发给快递员if (m_vendor.checkStatus()) {m_nState++;m_courier.submitRequest();std::cout << "********** 提交给快递员,跟踪次数:" <<  m_nCount << " **********" << std::endl;}break;case SubmittedToCourier:// 如果包裹交付,订单完成if (m_courier.checkStatus())return true;default:break;}m_nCount++;// 订单未完成return false;}
private:enum States {Received,  // 收到SubmittedToOrderTeam,  // 提交给订单团队SubmittedToVendor,  // 提交给供应商SubmittedToCourier  // 提交给快递员};int m_nState;  // 订单状态int m_nCount;  // 跟踪次数OrderTeam m_order;Vendor m_vendor;Courier m_courier;
};#include "facade.h"
int main()
{OnlineShoppingFacade facade;// 提交订单facade.submitRequest();// 跟踪订单,直到订单完成while (!facade.checkStatus());std::cout << "********** 订单完成,跟踪次数:" << facade.followupNum() << "  **********" << std::endl;getchar();return 0;
}

 

http://www.yayakq.cn/news/391490/

相关文章:

  • 减肥网站开发目的雅安公司做网站
  • 竞网网站建设网店推广费用多少钱
  • 漳州市东山县建设局网站代做备案网站
  • 路由器做映射后 内网可以访问到我的网站 但是外网无法访问工业品一站式采购平台
  • 网站备案法律福田住房和建设局网站
  • 吉林省住房和城乡建设厅网站6wordpress文章图片显示不出
  • 自己做网站的二维码art2008cms网站开发
  • 做网站公司费用用凡科网建设的网站
  • 网站建网站建站现在推广网站最好的方式
  • 网站后台如何上传图片微信网站开发服务外包
  • 关键词与网站标题关键词seo排名优化
  • 企业网站都是静态的吗wordpress 编辑页脚
  • 怎么做旅游网站中天建设集团有限公司电话号码
  • 徐州网站建设公司哪个好做网站的自我介绍
  • 网站建设规划方案.ppt成全视频在线观看免费高清动漫
  • 阿里巴巴建设网站服饰 公司 网站建设
  • 靖江网站建设众筹插件 wordpress
  • 查网站开发语言php创建网页
  • 一个网站有多大深圳网站建设费用大概多少
  • 高端网站的设计开发公司搜索引擎排名优化公司
  • 哪里建网站性价比高网站建设的背景及意义
  • 做织带的网站设计网站建设价格
  • 做一套二级域名网站怎么做山东聊城建设局网站
  • 网站卖了对方做违法吗企业网站设计建设长春
  • 网站建设管理情况番禺seo
  • 教学网站建设目的网站建站和推广服务公司
  • 北京网站建设网站开发中国建筑网官网企业愿景
  • 重庆网站关键词排名优化上海58同城招聘网最新招聘
  • 三联网站建设网站目录提交
  • 重庆商城网站建设地址个人网站怎么备案