当前位置:首页 > 科技  > 软件

策略模式与组合模式在C#中的实践运用

来源: 责编: 时间:2024-06-20 08:59:22 253观看
导读在软件开发中,设计模式是解决常见设计问题的最佳实践。策略模式和组合模式是两种常见的设计模式,它们可以帮助我们构建灵活且可维护的代码。本文将通过C#代码示例,展示如何在实践中结合使用策略模式和组合模式。策略模式

在软件开发中,设计模式是解决常见设计问题的最佳实践。策略模式和组合模式是两种常见的设计模式,它们可以帮助我们构建灵活且可维护的代码。本文将通过C#代码示例,展示如何在实践中结合使用策略模式和组合模式。mAe28资讯网——每日最新资讯28at.com

mAe28资讯网——每日最新资讯28at.com

策略模式

策略模式(Strategy Pattern)定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。mAe28资讯网——每日最新资讯28at.com

组合模式

组合模式(Composite Pattern)允许你将对象组合成树形结构以表示“部分-整体”的层次结构,使得客户端统一处理单个对象和对象的组合。mAe28资讯网——每日最新资讯28at.com

实践运用

假设我们正在开发一个绘图程序,该程序需要支持绘制不同的形状,如圆形、矩形和三角形。每种形状都有自己的绘制策略。此外,我们还想支持组合形状,即一组形状的组合,它们可以一起被绘制。mAe28资讯网——每日最新资讯28at.com

首先,我们定义一个IShape接口,表示一个可以绘制的形状:mAe28资讯网——每日最新资讯28at.com

public interface IShape{    void Draw();}

接下来,我们实现几种具体的形状类,它们实现了IShape接口:mAe28资讯网——每日最新资讯28at.com

public class Circle : IShape{    public void Draw()    {        Console.WriteLine("Drawing a circle.");    }}public class Rectangle : IShape{    public void Draw()    {        Console.WriteLine("Drawing a rectangle.");    }}public class Triangle : IShape{    public void Draw()    {        Console.WriteLine("Drawing a triangle.");    }}

现在,我们来实现组合形状类,它使用组合模式来组合多个形状:mAe28资讯网——每日最新资讯28at.com

public class CompositeShape : IShape{    private List<IShape> _shapes = new List<IShape>();    public void Add(IShape shape)    {        _shapes.Add(shape);    }    public void Remove(IShape shape)    {        _shapes.Remove(shape);    }    public void Draw()    {        foreach (var shape in _shapes)        {            shape.Draw();        }    }}

最后,我们可以在客户端代码中使用这些形状和组合形状:mAe28资讯网——每日最新资讯28at.com

class Program{    static void Main(string[] args)    {        // 创建单个形状        IShape circle = new Circle();        IShape rectangle = new Rectangle();        IShape triangle = new Triangle();        // 创建组合形状        CompositeShape compositeShape = new CompositeShape();        compositeShape.Add(circle);        compositeShape.Add(rectangle);        compositeShape.Add(triangle);        // 绘制单个形状        circle.Draw(); // 输出: Drawing a circle.        rectangle.Draw(); // 输出: Drawing a rectangle.        triangle.Draw(); // 输出: Drawing a triangle.        // 绘制组合形状        compositeShape.Draw();         // 输出:         // Drawing a circle.        // Drawing a rectangle.        // Drawing a triangle.    }}

在这个示例中,我们结合了策略模式和组合模式。每种形状都实现了IShape接口,从而定义了它们自己的绘制策略。而CompositeShape类则使用了组合模式,允许我们将多个形状组合成一个复合形状,并统一处理它们的绘制操作。mAe28资讯网——每日最新资讯28at.com

这种结合使用设计模式的做法可以提高代码的灵活性和可维护性,使得我们的绘图程序能够轻松地支持更多的形状类型,并且能够方便地组合和绘制这些形状。mAe28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-95005-0.html策略模式与组合模式在C#中的实践运用

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: MathWorks 全球副总裁 Richard Rovner:聚焦AI领域,专注技术和产品创新,赋能企业发展

下一篇: 闪光灯与常亮灯二合一!金贝米奇朵 H1 发布,轻量化拍摄布光新利器

标签:
  • 热门焦点
  • 6月安卓手机好评榜:魅族20 Pro蝉联冠军

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年6月1日至6月30日,仅限国内市场。第一名:魅族20 Pro好评率:95%5月份的时候魅族20 Pro就是
  • 分布式系统中的CAP理论,面试必问,你理解了嘛?

    对于刚刚接触分布式系统的小伙伴们来说,一提起分布式系统,就感觉高大上,深不可测。而且看了很多书和视频还是一脸懵逼。这篇文章主要使用大白话的方式,带你理解一下分布式系统
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 10天营收超1亿美元,《星铁》比《原神》差在哪?

    来源:伯虎财经作者:陈平安即便你没玩过《原神》,你一定听说过的它的大名。恨它的人把《原神》开服那天称作是中国游戏史上最黑暗的一天,有粉丝因为索尼在PS平台上线《原神》,怒而
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一
  • OPPO K11搭载高性能石墨散热系统:旗舰同款 性能凉爽释放

    日前OPPO官方宣布,将于7月25日14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼
  • Windows 11发布,微软一改往常对老机型开放的态度

    距离 Windows 11 发布已经过去一周,在过去一周里,很多数码爱好者围绕其对 Android 应用的支持、对老机型的升级问题展开了激烈讨论。与以往不同的是,在这次大
  • 与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
Top