其实说白了,要多态主要是为了“变化着的方向”去服务的。 如果一个程序写完了,永远都不会去改动它了,那么多态也好、设计模式也好、三层架构也好,都是毫无意义的。只要程序结构清晰,直接所有的代码堆过去就可以了。 很遗憾,写软件时,很多时候,都需要慢慢的去修改、维护去适应新的变化着的需求,那么这就需要了设计模式、多层架构去让你很好的适应变化的新要求了。
[quote=引用 7 楼 smthgdin 的回复:] [quote=引用 2 楼 caozhy 的回复:] 这个时候你可以用到继承,你定义一个基类,规定播放一个文件需要调用什么方法,需要什么参数,但是你并不直接实现它。而第三方的开发者只要继承这个类,重写你定义的方法,在里面具体给出实现的代码。而你的程序通过一种机制(我们一般用反射)在运行时根据配置文件创建第三方开发者开发的这个继承类的对象,这样你的程序就可以借助继承,调用到这些代码,仿佛这些代码是一个整体。 这就是继承的作用。
[quote=引用 2 楼 caozhy 的回复:] 这个时候你可以用到继承,你定义一个基类,规定播放一个文件需要调用什么方法,需要什么参数,但是你并不直接实现它。而第三方的开发者只要继承这个类,重写你定义的方法,在里面具体给出实现的代码。而你的程序通过一种机制(我们一般用反射)在运行时根据配置文件创建第三方开发者开发的这个继承类的对象,这样你的程序就可以借助继承,调用到这些代码,仿佛这些代码是一个整体。 这就是继承的作用。
要理解继承怎么用,先要搞清楚继承有什么用。 初学者不能理解继承是因为他没有这个需要,因为他一个人编写一个程序,那么这个程序所有的代码都是为他最终的那个程序服务的。 我们假设你不是一个人独立写一个程序,而是和别的开发者合作,一起实现最终的程序,你编写的代码不能随意让别的开发者修改,甚至都不必让他们拥有你的代码。如果你没有这样的经验,你必须努力设想这个场景。 一旦你想明白这一点,马上你就有这样一种需求:因为你的代码需要被调用或者调用人家的代码,而它不能被修改,所以它必须是一个黑盒,它要尽可能通用,这种通用不是指你在编写代码的时候考虑到所有可能的情形,这往往不现实,你希望的是,它能够适应未知的场景。为了达到这一点,你的代码必须留出一些“空白”,这些地方的代码由调用它的人来“填空”。 比如说,你编写了一个媒体播放器,你专注的是,它拥有美丽的外观,可以方便地组织播放列表,可以设置循环播放,等等……但是你希望它能播放的媒体文件的类型不仅限于你所听说过的那几种,甚至是程序写好的时候还没有发明的格式。这种情况下,媒体文件的读取解析的代码就不能直接在程序中写好,必须由第三方写好了,你来调用,你的程序如何调用你开发的时候甚至都不存在的代码呢? 这个时候你可以用到继承,你定义一个基类,规定播放一个文件需要调用什么方法,需要什么参数,但是你并不直接实现它。而第三方的开发者只要继承这个类,重写你定义的方法,在里面具体给出实现的代码。而你的程序通过一种机制(我们一般用反射)在运行时根据配置文件创建第三方开发者开发的这个继承类的对象,这样你的程序就可以借助继承,调用到这些代码,仿佛这些代码是一个整体。 这就是继承的作用。
你定义一个基类,规定播放一个文件需要调用什么方法,需要什么参数,但是你并不直接实现它。而第三方的开发者只要继承这个类,重写你定义的方法,在里面具体给出实现的代码。
111,092
社区成员
642,554
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧