首页 > 代码库 > 面向对象设计原则二:开闭原则(OCP)
面向对象设计原则二:开闭原则(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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。