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

广州网站建设新际网站模板软件

广州网站建设新际,网站模板软件,网站需要兼容哪些浏览器,一起做网店文章目录 实现举例应用钩子 Hook 模板方法模式是一种基于继承的设计模式,由两部分构成: 抽象父类(一般封装了子类的算法框架)具体的实现子类 实现 简单地通过继承就可以实现 举例 足球赛 和 篮球赛 都有 3 个步骤&#xff0c…

文章目录

    • 实现
    • 举例
    • 应用
    • 钩子 Hook

模板方法模式是一种基于继承的设计模式,由两部分构成:

  • 抽象父类(一般封装了子类的算法框架)
  • 具体的实现子类

实现

简单地通过继承就可以实现

举例

足球赛 和 篮球赛 都有 3 个步骤,初始化,开始游戏,结束游戏

我们发现他们都有这个过程,就可以把相同的点提取出来,设置成一个模板!

这里我们举例的 3 个方法都是抽象方法,有时如果子类的行为是一致的,可以直接实现具体方法~

using System;public abstract class Game
{public void Play(){Initialize();StartGame();EndGame();}protected abstract void Initialize();protected abstract void StartGame();protected abstract void EndGame();
}public class FootballGame : Game
{protected override void Initialize(){Console.WriteLine("Football game initialized. Setting up teams and players.");}protected override void StartGame(){Console.WriteLine("Football game started. Kickoff!");}protected override void EndGame(){Console.WriteLine("Football game ended. Final score and statistics displayed.");}
}public class BasketballGame : Game
{protected override void Initialize(){Console.WriteLine("Basketball game initialized. Setting up teams and players.");}protected override void StartGame(){Console.WriteLine("Basketball game started. Tip-off!");}protected override void EndGame(){Console.WriteLine("Basketball game ended. Final score and statistics displayed.");}
}public class Program
{public static void Main(string[] args){Game footballGame = new FootballGame();footballGame.Play();Console.WriteLine();Game basketballGame = new BasketballGame();basketballGame.Play();}
}

应用

常被架构师用来搭建项目的框架,程序员负责往里面填空

比如 Java 程序员经常用 HttpServlet 来开发项目,他包含 7 个生命周期,每个生命周期都对应一个 do 方法,这些方法就需要 HttpServlet 的子类进行 具体实现

钩子 Hook

根据上面的例子,如果有一种非常特别的球赛不需要 Initialize 就可以开始呢?

我们可以在容易变化的方法处设置一个 Hook,他可以有一个默认的实现,需不需要 Hook 挂钩则由子类自行决定,这样程序就有了变化的可能~

using System;public abstract class Game
{public void Play(){Initialize();StartGame();EndGame();}protected virtual void Initialize(){Console.WriteLine("Game initialized. Setting up teams and players.");// 在这里添加挂钩(Hook)行为AdditionalInitialization();}protected abstract void StartGame();protected abstract void EndGame();protected virtual void AdditionalInitialization(){// 默认的挂钩行为为空}
}public class FootballGame : Game
{protected override void StartGame(){Console.WriteLine("Football game started. Kickoff!");}protected override void EndGame(){Console.WriteLine("Football game ended. Final score and statistics displayed.");}protected override void AdditionalInitialization(){Console.WriteLine("Additional initialization for Football game.");}
}public class BasketballGame : Game
{protected override void StartGame(){Console.WriteLine("Basketball game started. Tip-off!");}protected override void EndGame(){Console.WriteLine("Basketball game ended. Final score and statistics displayed.");}protected override void AdditionalInitialization(){Console.WriteLine("Additional initialization for Basketball game.");}
}public class Program
{public static void Main(string[] args){Game footballGame = new FootballGame();footballGame.Play();Console.WriteLine();Game basketballGame = new BasketballGame();basketballGame.Play();}
}
http://www.yayakq.cn/news/415107/

相关文章:

  • 有哪些网站教做吃的网站建设和管理经验
  • 大型网站建设公司推荐深圳专业做网站专业
  • 有源码帮忙搭建网站吗干运维为什么会废了
  • asp网站后台源码江苏网站开发建设多少钱
  • asp学习网站延庆网站建设优化seo
  • 做生存曲线网站joomla网站建设
  • 如何快速搭建自己的网站网站域名背景
  • 网站的电子画册怎么做电子商务网站计划书
  • 网站访客qq统计 原理wordpress的固定链接如何设置
  • 静态网站如何共用一个头部和尾部wordpress首页添加友情链接
  • 学校网站开发报价表php wordpress 模版
  • 网站开发需要什么技术在线室内设计网站
  • 做网站体会心得宁波人流
  • 有关做美食的网站乐宁波seo托管公司
  • 沈阳网站推广公司网站动态和静态
  • 揭阳手机网站建设wordpress 虚拟浏览量
  • 门户网站建设管理总则江门网站快速排名
  • 好的营销网站纪检监察网站建设
  • 免费找订单的平台惠州seo网站管理
  • 不准别人网站做反链手机网站设计图尺寸
  • 做境外域名网站做渠道的网站有哪些
  • 手机网站模板开发商城网站建设需要多少
  • 网站设计思路方案做树状图的网站
  • 培训网站大数据分析网站建设顾问站建
  • 公司网站建设调研问卷全国酒店网站建设
  • 做外贸建网站平面设计软件图标
  • 织梦网站手机页怎么做营销类网站建设
  • 大兴网站开发网站建设哪家好大连制作网站多少钱
  • 网站建设沟通360免费建站391199
  • 网站建设的知识产权归属免费云电脑永久使用