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#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)

    c#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)

    这篇文章主要介绍了c#入门之枚举和结构体使用详解,最后提供了编写控制台应用程序接收字符串并做相应处理的小示例,需要的朋友可以参考下
    2014-04-04
  • LINQ基础之Join和UNION子句

    LINQ基础之Join和UNION子句

    这篇文章介绍了LINQ使用Join和UNION子句的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • c#利用Grahics进行图片裁剪

    c#利用Grahics进行图片裁剪

    这两天做了一个图片对比工具,里面要处理两张大的图片,所以要对图片先进行裁剪,下面看看我的方法吧
    2013-12-12
  • C#实现汉字转区位码的示例代码

    C#实现汉字转区位码的示例代码

    区位码是一个4位的十进制数,每个区位码都对应着一个唯一的汉字,区位码的前两位叫做区码,后两位叫做位码,下面我们就来看看如何使用C#实现汉字转区位码吧
    2024-01-01
  • C#实现TCP连接信息统计的方法

    C#实现TCP连接信息统计的方法

    这篇文章主要介绍了C#实现TCP连接信息统计的方法,可实现有效获取TCP连接信息及连接状态的功能,需要的朋友可以参考下
    2015-07-07
  • 浅析C#的复制和克隆

    浅析C#的复制和克隆

    这篇文章主要介绍了浅析C#的复制和克隆,需要的朋友可以参考下
    2014-07-07
  • 少见的C# RSA算法

    少见的C# RSA算法

    这篇文章主要介绍了非常少见的C# RSA算法,文章简单易懂,实例代码帮助大家更好的学习,感兴趣的朋友可以了解下
    2020-06-06
  • c#使用资源文件的示例

    c#使用资源文件的示例

    对于资源文件的使用,说白点就是通过强制类型转换,将资源文件里的数据强行的转换成你需要的,换种方式说,就是你原来存进去什么,就用什么类型拿出来,下面我们学习一下c#使用资源文件的方法
    2014-01-01
  • C#批量更新sql实例

    C#批量更新sql实例

    这篇文章主要介绍了C#批量更新sql的方法,详细讲述了其实现步骤与对应的核心代码,非常实用,需要的朋友可以参考下
    2014-10-10
  • C#实现的XML操作类实例

    C#实现的XML操作类实例

    这篇文章主要介绍了C#实现的XML操作类,涉及C#操作XML文件的读取、插入、修改、删除等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08

最新评论