面向对象设计原则二:开闭原则(OCP)
Posted .NET开发菜鸟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象设计原则二:开闭原则(OCP)相关的知识,希望对你有一定的参考价值。
开闭原则(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数据库实现类:
1 using System; 2 using System.Collections.Generic; 3 using System.Data.Common; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Data.SqlClient; 8 9 namespace 开闭原则_OCP_ 10 { 11 public class SqlServerDbConnection :IDbConnection 12 { 13 public DbConnection GetConnection() 14 { 15 // 连接数据库并返回 16 return new SqlConnection(); 17 } 18 } 19 }
Oracle数据库实现类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Data.OracleClient; 7 using System.Data.Common; 8 using System.Data.OracleClient; 9 10 namespace 开闭原则_OCP_ 11 { 12 public class OracleDbConnection:IDbConnection 13 { 14 public DbConnection GetConnection() 15 { 16 // 连接数据库并返回 17 return new OracleConnection(); 18 } 19 } 20 }
如果又增加了一个数据库,只需要在定义一个接口的实现类就可以。接口不会发生变化,接口的实现类实现了多样性,这样就实现了开闭原则。
以上是关于面向对象设计原则二:开闭原则(OCP)的主要内容,如果未能解决你的问题,请参考以下文章