qq_43412960 2018-11-15 06:32 采纳率: 78.6%
浏览 676
已采纳

关于C#多态作用的问题

计算机代码的可扩充性和可维护性指的是?
多态的作用如何理解?

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-15 06:46
    关注

    比如说,插件化软件开发。
    比如说Adobe编写了Photoshop,这个软件很强大,但是它再强大也不一定能满足所有人的需要。
    第三方厂商就可以给它编写插件,比如说滤镜插件,你可以用一个第三方滤镜把图片编成油画或者铅笔画的效果。
    那么第三方厂商怎么开发呢,显然它不能问Adobe公司要来全套Photoshop的源代码,把要加上的功能加上去,然后编译一下。
    相反,它只能写一个自己的程序,挂接到PS上,PS调用它,实现功能的扩展。
    当然,PS应该不是C#写的,这里只是用它举例子。
    你的程序如果能支持别人编写插件来无限扩充程序的功能,那么就是可扩展性。
    你的程序能不修改程序的主体功能,而实现需求的变更,这个就是可维护性。

    多态在这里发挥了很大的作用。多态体现在很多地方,比如说接口、方法重写、泛型、运算符重载,这里拿接口举例。
    ps允许第三方编写插件,那么就有一个问题,ps是先开发好的,插件是后编写的,那么ps要调用插件,就必须事先约定好调用的方式,插件按照这个约定编写,才能被调用。
    需要约定什么呢?你得有固定的函数名吧,你得有固定的参数和返回值吧,这样才能调用。
    那么接口就是规范代码编写者编写具有特定的方法签名的方法的一个办法,所谓方法签名,就是一个方法的参数个数、类型、返回值类型。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持