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

网页设计 做网站的代码百度快照功能

网页设计 做网站的代码,百度快照功能,蓬业东莞网站建设技术支持,超值的镇江网站建设模式定义 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method 使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特…

模式定义

定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method 使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。

按目的分类:

创建型(Creational)模式:

  • 将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。

结构型(Structural)模式:

  • 通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。

行为型(Behavioral)模式:

  • 通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。
按范围分类:
  • 类模式处理类与子类的静态关系。
  • 对象模式处理对象间的动态关系。
从封装变化角度对模式分类
组件协作:
  • Template Method
  • Observer/Event
  • Stategy
单一职责:
  • Decorator
  • Bridge
对象创建
  • Factory Method
  • Abstract Factory
  • Prototype
  • Builder
对象性能
  • Sigleton
  • Flyweight
接口隔离
  • Facade
  • Proxy
  • Mediator
  • Adapter
状态变化
  • Memento
  • State
数据结构
  • Composite
  • Iterator
  • Chain of
  • Resposibility
行为变化
  • Command
  • Visitor
领域问题
  • Interpreter

重构获得模式 (Refactoring to Patterns)

  • 面向对象设计模式是 “好的面向对象设计”,指的是可以免租 "应对变化,提高复用"的设计。

  • 现在软件设计的特征是 “需求的频繁变化”。设计模式的要点是 寻找变化点,然后在变化点处应用设计模式,从而更好的应对需求的变化在这里 什么时候、什么地点应用设计模式,比理解设计模式结构代码本身更加重要

  • 设计模式的应用不宜先入为主,一上来就使用设计模式是对设计模式最大的误用。没有一步到位的设计模式。敏捷软件开发实践提倡的 Refactoring to Patterns 是目前普遍公认最好的使用设计模式的方法。

重构关键技法

静态       --> 动态
早绑定     --> 晚绑定
继承       --> 组合
编译时依赖 --> 运行时依赖
紧耦合     --> 松耦合

组件协作模式

现代软件专业分工之后的第一个结果是 “框架与应用程序的划分”,“组件协作” 模式通过晚期绑定,来实现框架与应用程序直接的松耦合,是二者之间协作时常用的模式。

动机(Motivation)

在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但是各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现

如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求。

结构化软件设计流程

例如:当前一个库 有方法:step1,step3,5。那么对应的应用程序需要做步骤step2,step4。然后在使用的时候将这些步骤串起来使用。
结构化软件设计流程
早绑定,这里Library 实现的早,Application调用Library 就是早绑定:
早绑定

需要注意的地方:
virtual ~Library() {} 在C++中基类析构函数需要写成虚函数,如果不写成虚函数,那么可能它不会调用子类的析构函数。

在这里插入图片描述
晚绑定,Library 写的早,但是现在Library 反过来调用Application

晚绑定
变化:


// 库程序开发人员编写
class Library {
public:void Step1() {/*...*/ };void Step3() {/*...*/ };void Step5() {/*...*/ };
};// 应用程序开发人员编写
class Application {
public:void Step2() {/*...*/ };void Step4() {/*...*/ };
};int main()
{
// 当前使用步骤的整体流程Library lib;Application app;lib.Step1();if (app.Step2()) {lib.Step3();}for (int i = 0; i < 4; i++) {app.Step4();}lib.Step5();
}

修改上面步骤,让程序库开发人员将框架流程先写下来,让程序开发人员提供的接口 Step2(),Step4()修改为纯虚函数,留给子类重写。

//程序库开发人员
class Library {
public://稳定 template methodvoid Run() {Step1();if (Step2()) { //支持变化 ==> 虚函数的多态调用Step3();}for (int i = 0; i < 4; i++) {Step4(); //支持变化 ==> 虚函数的多态调用}Step5();}virtual ~Library() {}protected:void Step1() {/*...*/ }void Step3() {/*...*/ }void Step5() {/*...*/ }virtual bool Step2() = 0;//变化virtual void Step4() = 0; //变化
};//应用程序开发人员
class Application : public Library {
protected:virtual bool Step2() {//... 子类重写实现}virtual void Step4() {//... 子类重写实现}
};int main()
{Library* pLib = new Application();pLib->Run();delete pLib;
} 

Template 的前提是 void Run() 必须稳定,也就是算法的骨架结构可以被重用。

总结

  • Teamplate Method 模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。 它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的拓展点,是代码复用方面的基本实现结构

除了可以灵活应对子步骤的变化外,不要调用我,让我来调用你的反向控制结构是 Teamplate Method 的典型应用。

在具体实现方面,被 Template Method 调用的虚方法可以具有 实现,也可以没有任何实现(抽象方法,纯虚方法),但一般推荐将它们设置为 protectecd 方法。

http://www.mmbaike.com/news/58077.html

相关文章:

  • 天心区网站建设域名解析查询站长工具
  • 婚纱摄影网站定制最新军事动态
  • 冠县网站制作seo搜索引擎优化师
  • 网络运维前景怎么样南宁seo主管
  • 网站怎么做三级的哪家建设公司网站
  • 晚上奖励自己的网站推荐广州seo优化效果
  • 纯css网站网络营销岗位有哪些
  • 一家只做外卖的网站成都网站建设创新互联
  • 少儿类网站怎么做广州网络营销公司
  • 做企业网站的神马seo服务
  • 怎样用ps做网站google seo怎么做
  • 通州重庆网站建设seo优化的主要内容
  • 淘宝搜索排名廊坊seo推广
  • 网站盈利方式长沙疫情最新数据消息
  • 淘宝联盟怎样建设网站镇江市网站
  • 网站注册域名查询2000元代理微信朋友圈广告
  • 招商网站seo排名工具
  • 远象建设 网站外贸建站教程
  • 网站 关于我们 模板竞价开户推广
  • 可信网站标准版武汉网站建设优化
  • wordpress密码$电脑优化大师有用吗
  • 想做一个网站怎么做的济南百度竞价
  • 义乌制作网站开发衡阳百度推广
  • 国外购物平台网页搜索优化seo
  • 百度指数网站如何进行推广
  • 建站平台加盟百度搜索排名怎么靠前
  • 东莞 企业网站建设百度推广怎么收费标准案例
  • 西红门网站建设公司seo在线短视频发布页运营
  • 扬中住房和城乡建设委员会网站优化软件seo排名
  • 免费行情软件下载广东知名seo推广多少钱