首页 > 代码库 > C#设计模式系列:开闭原则(Open Close Principle)
C#设计模式系列:开闭原则(Open Close Principle)
1、开闭原则简介
开闭原则对扩展开放,对修改关闭,开闭原则是面向对象设计中可复用设计的基石。
2、开闭原则的实现
实现开闭原则的关键就在于抽象,把系统的所有可能的行为抽象成一个抽象底层,这个抽象底层规定出所有的具体实现必须提供的方法的特征。作为系统设计的抽象层,要预见所有可能的扩展,从而使得在任何扩展情况下,系统的抽象底层不需修改;同时,由于可以从抽象底层导出一个或多个新的具体实现,可以改变系统的行为,因此系统设计对扩展是开放的。
3、如何使用开闭原则
抽象约束
1>、通过接口或者抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法;
2>、参数类型、引用对象尽量使用接口或者抽象类,而不是实现类;
3>、抽象层尽量保持稳定,一旦确定即不允许修改。
4、开闭原则的优点
1>、可复用性
2>、可维护性
5、开闭原则示例
Shape.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DesignPatterns.OpenClosedPrinciple{ 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(); }}
Rectangle.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DesignPatterns.OpenClosedPrinciple{ /// <summary> /// 矩形 /// </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()); } }}
Circle.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DesignPatterns.OpenClosedPrinciple{ /// <summary> /// 圆形 /// </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, 2); } public override void Display() { Console.WriteLine("{0} 半径:{1},面积:{2}", _name, _radius, this.Area()); } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。