软件设计的开闭原则
开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。对于扩展是开放的,对于修改是关闭的,这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。(https://baike.baidu.com/item/开闭原则/2828775)
简单来说即:封装确定的,开放不确定的,不确定的功能推迟到合适的子类中实现
抽象类
- 抽象类是未完全实现逻辑的类
- 抽象类是完全当成基类来使用的,抽象类不能被实例化
- 含有抽象方法的类一定是抽象类
- 抽象类中可以有字段和非抽象方法
- 抽象类仍然可以实现多态
- 接口相当于纯抽象类
class Program
{
static void Main(string[] args)
{
Vehicle v = new Car();
v.Run();//打印出:Car is running!
v.Stop(); //打印出: Stop
Console.ReadKey();
}
}
abstract class Vehicle
{
public int Age;
public abstract void Run();
public void Stop()
{
Console.WriteLine("Stop");
}
}
class Car : Vehicle
{
public override void Run()
{
Console.WriteLine("Car is running!");
}
}