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

网站备案号官网php做学校网站免费下载

网站备案号官网,php做学校网站免费下载,烟台网站建设开发,从网络安全角度考量_写出建设一个大型电影网站规划方案一、问题的提出 Strategy 模式#xff1a;算法实现与抽象接口的解耦 Strategy 模式和 Template 模式要解决的问题是相似的#xff0c;都是为了将业务逻辑#xff08;算法#xff09;的具体实现与抽象接口解耦。Strategy 模式通过将算法封装到一个类#xff08;Context算法实现与抽象接口的解耦 Strategy 模式和 Template 模式要解决的问题是相似的都是为了将业务逻辑算法的具体实现与抽象接口解耦。Strategy 模式通过将算法封装到一个类Context中并通过组合的方式将具体算法的实现委托给组合对象来完成。 二、模式选择 Strategy 模式的典型结构如下图所示 其核心思想是将算法的逻辑抽象接口如 DoAction封装到一个类中Context然后通过委托的方式将具体的算法实现交给具体的 Strategy 类如 ConcreteStrategyA 和 ConcreteStrategyB来完成。 三、代码实现 以下是 Strategy 模式的完整实现代码采用 C 编写。 代码实现 Strategy.h #ifndef _STRATEGY_H_ #define _STRATEGY_H_// 抽象策略类定义算法接口 class Strategy { public:Strategy() {}virtual ~Strategy() {}virtual void AlgorithmInterface() 0; // 算法接口子类实现 };// 具体策略类A实现算法接口 class ConcreteStrategyA : public Strategy { public:ConcreteStrategyA() {}virtual ~ConcreteStrategyA() {}void AlgorithmInterface() override; // 实现算法接口 };// 具体策略类B实现算法接口 class ConcreteStrategyB : public Strategy { public:ConcreteStrategyB() {}virtual ~ConcreteStrategyB() {}void AlgorithmInterface() override; // 实现算法接口 };#endif //~_STRATEGY_H_ Strategy.cpp #include Strategy.h #include iostream using namespace std;// 具体策略类A的算法实现 void ConcreteStrategyA::AlgorithmInterface() {cout ConcreteStrategyA: AlgorithmInterface endl; }// 具体策略类B的算法实现 void ConcreteStrategyB::AlgorithmInterface() {cout ConcreteStrategyB: AlgorithmInterface endl; } Context.h #ifndef _CONTEXT_H_ #define _CONTEXT_H_class Strategy;/*** Context 类是 Strategy 模式的关键也是 Strategy 模式和 Template 模式的主要区别所在。* Strategy 模式通过组合委托的方式实现算法的异构而 Template 模式则通过继承的方式实现。*/ class Context { public:Context(Strategy* strategy); // 构造函数传入具体策略~Context();void DoAction(); // 执行策略 private:Strategy* _strategy; // 组合的策略对象 };#endif //~_CONTEXT_H_ Context.cpp #include Context.h #include Strategy.h #include iostream using namespace std;// 构造函数初始化策略对象 Context::Context(Strategy* strategy) : _strategy(strategy) {}// 析构函数释放策略对象 Context::~Context() {if (_strategy) {delete _strategy;} }// 执行策略 void Context::DoAction() {_strategy-AlgorithmInterface(); } main.cpp #include Context.h #include Strategy.h #include iostream using namespace std;int main(int argc, char* argv[]) {Strategy* strategyA new ConcreteStrategyA(); // 创建具体策略AContext* contextA new Context(strategyA); // 创建上下文传入策略AcontextA-DoAction(); // 执行策略AStrategy* strategyB new ConcreteStrategyB(); // 创建具体策略BContext* contextB new Context(strategyB); // 创建上下文传入策略BcontextB-DoAction(); // 执行策略Bdelete contextA;delete contextB;return 0; } 代码说明 Strategy 模式的实现非常直观其核心思想是将算法的逻辑封装到一个类中并通过组合的方式将具体算法的实现委托给组合对象。Context 类通过持有 Strategy 对象的指针动态调用具体的算法实现。 四、总结讨论 Strategy 模式和 Template 模式解决了类似的问题但它们采用了不同的实现方式Strategy 模式通过组合委托实现算法的异构而 Template 模式则通过继承实现。这两种方式各有优缺点 继承的优缺点 优点 1易于修改和扩展被复用的实现。 缺点 1破坏了封装性父类的实现细节暴露给子类 2属于“白盒”复用 3当父类的实现更改时所有子类都需要随之改变 4继承的实现在运行期间不能改变编译期间已确定。 组合的优缺点 优点 1属于“黑盒”复用被包含对象的内部细节对外不可见 2封装性好 3实现和抽象的依赖性小 4可以在运行期间动态定义实现通过抽象基类的指针。 缺点 1系统中对象可能过多。 从上述对比可以看出组合相比继承具有更好的灵活性和封装性。因此在面向对象设计中有一条重要的原则优先使用对象组合而非类继承Favor Composition Over Inheritance。 Strategy 模式通过组合的方式实现了算法与抽象接口的解耦适用于需要在运行时动态切换算法的场景。与 Template 模式相比Strategy 模式更加灵活避免了继承带来的强耦合性。在实际开发中优先使用组合而非继承可以显著提高代码的可维护性和扩展性。
http://www.dnsts.com.cn/news/48146.html

相关文章:

  • 套模板的网站多少钱广州网站优
  • 做网站网站判刑湖南长沙现在能去吗
  • 网站建设是属于软件开发费吗做网站首先要干什么
  • 成都企业网站建设哪家专业商城网站开发项目文档
  • 在郑州做网站小红书搜索关键词排名
  • vr技术在网站建设的应用常见的网站开发语言
  • 英文网站营销上海建设工程交易服务中心
  • 高明专业网站建设报价北京做网站的价格
  • 网站产品页面什么时候做网站及建设中页面
  • 做网站和做网页的区别安徽建设网证书查询
  • 企业网站管理名词解释网站名字大全有哪些
  • 重庆免费做网站宁德市建设局网站
  • 网站用户黏度表现在页面设计说明怎么写
  • 网站设计开发人员pc版网站生成App
  • 大连模板网站制作公司商业类网站的设计与制作
  • 网站开发去哪学网站维护说明
  • 做产品设计之前怎么查资料国外网站wordpress 手机主题
  • 如何做网站alexa排名厦门网站建设网页设计
  • 企业推广网站网页视频下载器app
  • 室内设计图网站有哪些设计网页页面
  • 网站结构规划青岛专业网站建设
  • wordpress查询次数西风seo
  • 网站建设属于哪类工作网站制作入门课程
  • 手机能搭建网站吗合肥seo按天扣费
  • 班级网站源代码下载公司网页设计制作有哪些
  • 网站建建设小型建筑公司名字大全
  • 做网站有用nodejs福田蒙派克e质量怎么样
  • 如何让自己网站排名提高一个网址建多个网站
  • 机械网站源码 php建设自动弹出qq对话框的网站
  • 多用户商城网站开发网络优化工程师能干一辈子吗