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

关于做公司app的软件或网站怎样在百度上宣传自己的产品

关于做公司app的软件或网站,怎样在百度上宣传自己的产品,成功的微网站,番禺微网站建设4 钩子方法的使用模板方法模式中,在父类中提供了一个定义算法框架的模板方法,还提供了一系列抽象方法、具体方法和钩子方法,其中钩子方法的引入使得子类可以控制父类的行为。最简单的钩子方法就是空方法,代码如下:publ…

4 钩子方法的使用

     

       模板方法模式中,在父类中提供了一个定义算法框架的模板方法,还提供了一系列抽象方法、具体方法和钩子方法,其中钩子方法的引入使得子类可以控制父类的行为。最简单的钩子方法就是空方法,代码如下:

public virtual void Display() {   }

      当然也可以在钩子方法中定义一个默认的实现,如果子类不覆盖钩子方法,则执行父类的默认实现代码。

      另一种钩子方法可以实现对其他方法进行约束,这种钩子方法通常返回一个bool类型,即返回true或false,用来判断是否执行某一个基本方法,下面通过一个实例来说明这种钩子方法的使用。

      某软件公司欲为销售管理系统提供一个数据图表显示功能,该功能的实现包括如下几个步骤:

      (1) 从数据源获取数据;

      (2) 将数据转换为XML格式;

      (3) 以某种图表方式显示XML格式的数据。

      该功能支持多种数据源和多种图表显示方式,但所有的图表显示操作都基于XML格式的数据,因此可能需要对数据进行转换,如果从数据源获取的数据已经是XML数据则无须转换。

       由于该数据图表显示功能的三个步骤次序是固定的,且存在公共代码(例如数据格式转换代码),满足模板方法模式的适用条件,可以使用模板方法模式对其进行设计。因为数据格式的不同,XML数据可以直接显示,而其他格式的数据需要进行转换,因此第(2)步“将数据转换为XML格式”的执行存在不确定性,为了解决这个问题,可以定义一个钩子方法IsNotXMLData()来对数据转换方法进行控制。通过分析,该图表显示功能的基本结构如图4所示:

图4  数据图表显示功能结构图

       可以将公共方法和框架代码放在抽象父类中,代码如下:

//DataViewer.csusing System;namespace TemplateMethodSample{    abstract class DataViewer    {        //抽象方法:获取数据        public abstract void GetData();        //具体方法:转换数据        public void ConvertData()         {      Console.WriteLine("将数据转换为XML格式。");     }        //抽象方法:显示数据        public abstract void DisplayData();        //钩子方法:判断是否为XML格式的数据        public virtual bool IsNotXMLData()        {            return true;        }        //模板方法        public void Process()        {            GetData();            //如果不是XML格式的数据则进行数据转换            if (IsNotXMLData())            {                ConvertData();            }            DisplayData();        }    }}

       在上面的代码中,引入了一个钩子方法IsNotXMLData(),其返回类型为bool类型,在模板方法中通过它来对数据转换方法ConvertData()进行约束,该钩子方法的默认返回值为true,在子类中可以根据实际情况覆盖该方法,其中用于显示XML格式数据的具体子类XMLDataViewer代码如下:

//XMLDataViewer.csusing System;namespace TemplateMethodSample{    class XMLDataViewer : DataViewer    {        //实现父类方法:获取数据        public override void GetData()         {      Console.WriteLine("从XML文件中获取数据。");     }        //实现父类方法:显示数据,默认以柱状图方式显示,可结合桥接模式来改进        public override void DisplayData()         {            Console.WriteLine("以柱状图显示数据。");     }        //覆盖父类的钩子方法        public override bool IsNotXMLData()        {            return false;        }    }}

       在具体子类XMLDataViewer中覆盖了钩子方法IsNotXMLData(),返回false,表示该数据已为XML格式,无须执行数据转换方法ConvertData(),客户端代码如下:

//Program.csusing System;namespace TemplateMethodSample{    class Program    {        static void Main(string[] args)        {            DataViewer dv;            dv = new XMLDataViewer();            dv.Process();            Console.Read();        }    }}

       该程序运行结果如下:

从XML文件中获取数据。

以柱状图显示数据。

 

5 模板方法模式效果与适用场景

       模板方法模式是基于继承的代码复用技术,它体现了面向对象的诸多重要思想,是一种使用较为频繁的模式。模板方法模式广泛应用于框架设计中,以确保通过父类来控制处理流程的逻辑顺序(如框架的初始化,测试流程的设置等)。

 

       5.1 模式优点

       模板方法模式的主要优点如下:

       (1) 在父类中形式化地定义一个算法,而由它的子类来实现细节的处理,在子类实现详细的处理算法时并不会改变算法中步骤的执行次序。

       (2) 模板方法模式是一种代码复用技术,它在类库设计中尤为重要,它提取了类库中的公共行为,将公共行为放在父类中,而通过其子类来实现不同的行为,它鼓励我们恰当使用继承来实现代码复用。

       (3) 可实现一种反向控制结构,通过子类覆盖父类的钩子方法来决定某一特定步骤是否需要执行。

       (4) 在模板方法模式中可以通过子类来覆盖父类的基本方法,不同的子类可以提供基本方法的不同实现,更换和增加新的子类很方便,符合单一职责原则和开闭原则。

 

       5.2 模式缺点

       模板方法模式的主要缺点如下:

       需要为每一个基本方法的不同实现提供一个子类,如果父类中可变的基本方法太多,将会导致类的个数增加,系统更加庞大,设计也更加抽象,此时,可结合桥接模式来进行设计。

 

       5.3 模式适用场景

       在以下情况下可以考虑使用模板方法模式:

       (1) 对一些复杂的算法进行分割,将其算法中固定不变的部分设计为模板方法和父类具体方法,而一些可以改变的细节由其子类来实现。即:一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。

       (2) 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。

       (3) 需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制。


 【作者:刘伟   http://blog.csdn.net/lovelion】 

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

http://www.lbrq.cn/news/2545489.html

相关文章:

  • 如何申请深圳设计公司网站搜索推广平台有哪些
  • 做机械设计兼职的网站怎么免费制作网页
  • 新网站前期seo怎么做seo技术306
  • ppt模板免费下载哪个网站好seo整站优化服务
  • 做一个网站如何赚钱搜索引擎推广与优化
  • 少儿英语做游戏网站推荐网上营销网站
  • 专业网站建设经费申请报告seo顾问服务 乐云践新专家
  • 专业做网站的公司有广西seo优化
  • 线上网络推广培训seo是什么牌子
  • 2019年怎么做网站今天最新新闻摘抄
  • b2b网站发布信息技巧seo作弊
  • 手机营销网站建设百度一下你就知道下
  • 企业交易平台的网站制作多少钱店铺如何运营和推广
  • 学做快餐的视频网站西安百度百科
  • 做网站需要哪些素材百度广告商
  • 网站开发报告知乎小说推广对接平台
  • dw和mysql做网站网站域名综合查询
  • 广州市疫情防控新闻发布会seo监控
  • 定制网站建设开发维护品牌软文案例
  • 春哥技术团队网站建设window优化大师
  • 网站建设合作协议模板搜索网
  • 装修网站设计图推荐找客户的十大方法
  • 保定建设环境项目网站站长工具平台
  • 软件开发工程师招聘简章沈阳关键词优化价格
  • 智慧社区背景图福州seo快速排名软件
  • 4399谁做的网站潍坊seo建站
  • 沧州网络公司电话seo云优化软件破解版
  • 网站建设价目外贸网站大全
  • 好多个人网站做经营性网站怎么申请网站
  • 网站统计插件站内seo和站外seo区别
  • 让 OAuth 授权码流程更安全的 PKCE 技术详解
  • 国内短剧CSP系统开发:技术架构与合规实践全解析
  • 外卖“0元购”退场后,即时零售大战才刚开始
  • grafana/lock-stack 日志 Pipeline 配置
  • 大气波导中的抛物线方程建模(下):数值求解
  • 【Excel】制作双重饼图