C#设计模式之--六大原则 开闭原则

这篇具有很好参考价值的文章主要介绍了C#设计模式之--六大原则 开闭原则。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#) 开闭原则。

 

开闭原则(Open Closed Principle)

开闭原则(Open-Closed Principle,OCP)是指一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。如当一个模块需要修改的时,不应该直接修改源代码,这样有可能对现有的工作造成影响。应该通过拓展来实现新需求。

例如,

1)一般的反面设计实现

using System;
namespace ConsoleApplication
{
    /// <summary>
    /// 矩形(Shape.cs)
    /// </summary>
    public class Shape
    {
        private double _width;
        private double _height;
        private double _radius;
        private string _name;
        public Shape(string name, double width, double height)
        {
            this._width = width;
            this._height = height;
            _name = name;
        }
        public double AreaRectangle()
        {
            return _width * _height;
        }
        public void DisplayRectangle()
        {
            Console.WriteLine("{0} 长:{1},宽:{2},面积:{3}", _name, _width, _height, this.AreaRectangle());
        }
        public Shape(string name, double radius)
        {
            this._radius = radius;
            this._name = name;
        }
        public double AreaCircle()
        {
            return Math.Round(Math.PI * _radius * _radius);
        }
        public void DisplayCircle()
        {
            Console.WriteLine("{0} 半径:{1},面积:{2}", _name, _radius, this.AreaCircle());
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Shape circle = new Shape("圆", 1);
            circle.DisplayCircle();
            Shape rectangle = new Shape("正方形", 100, 100);
            rectangle.DisplayRectangle();
            Console.ReadKey();
        }
    }
}

 2)开闭原则的实现

using System;
namespace ConsoleApplication
{
    //Shape.cs
    public abstract class Shape
    {
        protected string _name;
        public Shape(string name)
        {
            this._name = name;
        }
        /// <summary>
        /// 面积
        /// </summary>
        /// <returns></returns>
        public abstract double Area();
        /// <summary>
        /// 显示
        /// </summary>
        public abstract void Display();
    }
    /// <summary>
    /// 矩形(Rectangle.cs)
    /// </summary>
    public class Rectangle : Shape
    {
        private double _width;
        private double _height;
        public Rectangle(string name, double width, double height)
            : base(name)
        {
            this._width = width;
            this._height = height;
        }
        public override double Area()
        {
            return _width * _height;
        }
        public override void Display()
        {
            Console.WriteLine("{0} 长:{1},宽:{2},面积:{3}", _name, _width, _height, this.Area());
        }
    }
    /// <summary>
    /// 圆形(Circle.cs)
    /// </summary>
    public class Circle : Shape
    {
        private double _radius;
        public Circle(string name, double radius)
            : base(name)
        {
            this._radius = radius;
        }
        public override double Area()
        {
            return Math.Round(Math.PI * _radius * _radius);
        }
        public override void Display()
        {
            Console.WriteLine("{0} 半径:{1},面积:{2}", _name, _radius, this.Area());
        }
    }
    class Program
    {
        static void Main(string[] args)
        {   
            Shape circle = new Circle("圆", 1);
            circle.Display();
            Shape rectangle = new Rectangle("正方形", 100, 100);
            rectangle.Display();
            Console.ReadKey();
        }
    }
}

 文章来源地址https://www.toymoban.com/news/detail-683515.html

到了这里,关于C#设计模式之--六大原则 开闭原则的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件设计模式原则(二)开闭原则

    继续讲解第二个重要的设计模式原则——开闭原则~ 一.定义         开闭原则,在面向对象编程领域中,规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为

    2024年02月06日
    浏览(49)
  • 设计模式——开闭原则

    开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的

    2024年02月11日
    浏览(48)
  • 【设计模式之美】SOLID 原则之二:开闭原则方法论、开闭原则如何取舍

    具体的说,添加一个新的功能应该是,在已有代码基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等)。 举例说明: 现在,如果我们需要添加一个功能,当每秒钟接口超时请求个数,超过某个预先设置的最大阈值时,我们也要触发告警

    2024年01月25日
    浏览(52)
  • 【23种设计模式】开闭原则

    个人主页 :金鳞踏雨 个人简介 :大家好,我是 金鳞 ,一个初出茅庐的Java小白 目前状况 :22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客 :这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进

    2024年02月08日
    浏览(48)
  • 贯穿设计模式第二话--开闭原则

    🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,感谢观赏,大家好呀,我是最爱吃鱼罐头,大家可以叫鱼罐头呦~🥳🥳🥳 从今天开始,将开启一个专栏, 【贯穿设计模式】 ,设计模式是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案,是

    2023年04月11日
    浏览(34)
  • 设计模式】引言-六大设计原则

    ● 概念:仅有一个引起其变化的原因。 ● 个人理解:一个类中应该是一组相关性很高的函数及数据的封装 主观性较强,和起名一样困难,一个方法放在ClassA合理还是放在ClassB合理? ● 概念:一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码

    2023年04月24日
    浏览(42)
  • 设计模式的六大设计原则

    一个类只负责一个单一明确的职责。如果一个类同时负责多个职责,来自职责A的需求变更引起的修改可能会导致职责B的功能发生故障。 比如说一个类T原本是符合单一职责的,后来因为某种原因或者是需求变更了,需要将职责P细分为颗粒度更细的职责P1和职责P2,这时候可以

    2024年02月09日
    浏览(45)
  • 设计模式之六大设计原则

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好

    2024年02月02日
    浏览(48)
  • 设计模式——设计模式以及六大原则概述

    设计模式代表有经验的面向对象软件开发人员使用的最佳实践。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。 这些解决方案是由许多软件开发人员在相当长的时间内通过试错获得的。 在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四

    2024年02月13日
    浏览(50)
  • 设计模式的六大原则

    1、单一职责原则,其核心就是控制类的粒度大小、将对象解耦、提高其内聚性; 2、开闭原则,可以通过“抽象约束、封装变化”来实现(对扩展开放(提供方),对修改关闭(使用方),遵循其他规则最终就是遵循开闭原则,所以开闭是最重要的一个原则); 3、里氏替换

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包