C#面向对象设计原则之开闭原则

 更新时间:2022年03月07日 10:59:02   作者:.NET开发菜鸟  
这篇文章介绍了C#面向对象设计原则之开闭原则,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

开闭原则(OCP)

定义:对扩展开发,对修改关闭。
好处:

  • 适应性和灵活性。
  • 稳定性和延续性。
  • 可复用性与可维护性。

解释说明:开闭原则指的是两方面:对功能扩展开发,对修改进行关闭;有时当用户要求或需求发生变化时,我们不得不打开原来的代码进行修改,进行功能的扩展或增加,这种设计如果应用到我们以后的项目开发中会导致严重的问题,这样容易导致意外的错误。好的程序,应该保证在我们进行程序扩展时,不会更改以前的代码。如何才能保证这样的效果呢?我们在定义一个类的功能时:最好先定义他的抽象类或接口,这样在功能扩展时,我们只需要在原来抽象类和接口的基础上编写新的实现类和子类,这样既能扩展功能又不影响以前的功能。

示例:

定义数据库链接的接口

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 开闭原则_OCP_
{
    /// <summary>
    /// 数据库连接
    /// </summary>
    public interface IDbConnection
    {
        public DbConnection GetConnection();   
    }
}

分别定义两个接口的实现类

SQL Server数据库实现类:

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

namespace 开闭原则_OCP_
{
    public class SqlServerDbConnection :IDbConnection
    {
        public DbConnection GetConnection()
        {
            // 连接数据库并返回
            return new SqlConnection();
        }
    }
}

Oracle数据库实现类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OracleClient;
using System.Data.Common;
using System.Data.OracleClient;

namespace 开闭原则_OCP_
{
   public  class OracleDbConnection:IDbConnection
    {
        public DbConnection GetConnection()
        {
            // 连接数据库并返回
            return new OracleConnection();
        }
    }
}

如果又增加了一个数据库,只需要在定义一个接口的实现类就可以。接口不会发生变化,接口的实现类实现了多样性,这样就实现了开闭原则。

代码下载链接:点此下载

到此这篇关于C#面向对象设计原则之开闭原则的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C# yield在WCF中的错误使用(二)

    C# yield在WCF中的错误使用(二)

    这篇文章主要介绍了C# yield在WCF中的错误使用(二),本文讲解的内容据说是99%的开发人员都有可能犯的错误,需要的朋友可以参考下
    2015-04-04
  • 浅析C# 基础语法的使用

    浅析C# 基础语法的使用

    本篇文章对C#中基础语法的使用。进行了详细的分析介绍。需要的朋友参考下
    2013-05-05
  • 快速学习C# 设计模式之职责链模式

    快速学习C# 设计模式之职责链模式

    这篇文章主要介绍了C# 设计模式之职责链模式的的相关资料,文中代码非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • C#贪吃蛇游戏实现分析

    C#贪吃蛇游戏实现分析

    这篇文章主要为大家分析了C#贪吃蛇游戏的实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • C#中的HttpWebRequest类用法详解

    C#中的HttpWebRequest类用法详解

    本文详细讲解了C#中的HttpWebRequest类的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • 详解Unity中的ShaderGraph入门使用教程

    详解Unity中的ShaderGraph入门使用教程

    Unity2018版本之后推出了一个可编程渲染管线工具ShaderGraph,让我们可以通过可视化界面拖拽来实现着色器的创建和编辑,今天重点给大家介绍Unity中的ShaderGraph入门使用教程,需要的朋友参考下吧
    2021-07-07
  • C# 设计模式系列教程-桥接模式

    C# 设计模式系列教程-桥接模式

    桥接模式降低了沿着两个或多个维度扩展时的复杂度,防止类的过度膨胀,解除了两个或多个维度之间的耦合,使它们沿着各自方向变化而不互相影响。
    2016-06-06
  • C#中调用VB中Inputbox类的实现方法

    C#中调用VB中Inputbox类的实现方法

    本文主要介绍在项目中引用Microsoft.VisualBasic,间接使用VB中的各种类库的方法,或者自己创建函数,调用自定义方法,以实现InputBox相关的功能。
    2016-05-05
  • C#使用listView增删操作实例

    C#使用listView增删操作实例

    这篇文章主要介绍了C#使用listView增删操作的实现方法,实例分析了C#中使用listView控件进行动态添加、选中删除等操作的技巧,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • C# 使用SHA1算法对密码进行加密

    C# 使用SHA1算法对密码进行加密

    这篇文章主要介绍了C# 使用SHA1算法对密码进行加密,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03

最新评论