zoukankan      html  css  js  c++  java
  • 心得之——程序的修改和拓展

    心得之——程序的修改和拓展

      作为一名程序员或者说了解过程序的人来说,我相信常常都会听到别人说一个好的程序最基本的就是良好的可拓展性易修改性(大概是这个意思,原我给忘了),那么到底什么是良好的拓展和已修改性呢,我们又为什么要保证程序的修改和拓展呢?这是我从大学时期就一直在想的问题。

      我记得当时我们老师的回答是:假如你现在要去卖水果:苹果和香蕉,那么你定一个方法 public void  sellFruit(苹果对象,香蕉对象),好了现在你直接用这个方法你可以去卖水果了,但是问题来了,如果某一天你发财了,你可以卖5中水果:水蜜桃、苹果、香蕉、葡萄和柚子,那么你是宁外写一个方法 public void  sellFruit2(苹果对象,香蕉对象,水蜜桃,葡萄,柚子),还是说还是在原方法上呢?当时我想了半天,直接就晕了,然后老师就说,不管是水蜜桃、苹果还是香蕉不都是水果吗?我一听,对啊,当即就把方法改了public void  sellFruit(水果对象),其他所有水果的对象继承水果对象,老师笑了笑,直说你的面向对象还挺喜欢用.....请问一下各位,你能看懂老师到底是在说什么吗?

      其实后来自己接触的程序多了,也就慢慢的有了一个大概的了解,其实换一个例子来说:你要让某个服装厂改服装:test(颜色,型号);结果你把衣服拿回来客户还不满意说还要加特点,行这个时候你就重写test(加特点);那么试想一下如果这回客户说我想衣服的袖子一边长一边短,你是否又要重写方法呢?其实不用,首先他要改的是衣服这个对象,那么假如衣服这个对象目前一共的特点包括:颜色、大小、款式、袖长、腰围、胸围,test(衣服对象)那么在这个方位内的属性就算客户改需求是否我们也就不用再改方法呢,哈有一种情况,这个时候客户说衣服是有领的,我要换成无领,那么我们也只要在衣服对象中添加衣领属性就行,这是大大的减少了我们的修改量。可能这个说的也还是很抽象,特别是对于没有更改过需求,或者业务层次区分不够明显的,可能理解起来就感觉没什么区别,或者还会觉得更麻烦。

      其实在真正的一个项目中,前期需求不代表永远,就算项目上线了,也有可能加功能,对项目进行拓展,一般来说修改是每个程序员常经历之事,改自己的代码还好,但是要是你要改的是别人的代码,而他的代码里边所有方法全是用的属性,参数值在传递,那么我想需求稍微一变那你就要疯了吧,就比如说:dao、servces、实现类、接口,对象,如果你使用的是参数值传递,那么需求一变不好意思,dao、servces、实现类、接口就都得更改,但是如果您使用的是对象传递,那么你只需要更改对象和实现类就好,这是大大的减少了我们的工作量,提高了工作效率,最关键的是心情还好了。以上呢就是简单的说了一下程序的修改

      对于程序的拓展性可能更多的就涉及到泛型反射,当然也有通过对象属性实现拓展,那么我们还是先举个列子,简单的说一下为什么要提供拓展性。

      还是以服装厂修改衣服举例,我相信一个再穷的服装厂肯定都不是只卖衣服,可能还有裤子,或者其他的,或者说衣服都不止一种品种,那么对于不同的物品是佛偶我们还要去创建不同的方法呢,那么当我们想修改一个新的物种的时候,恭喜你,:dao、servces、实现类、接口,对象,你都需要修改,但是反之假如你用的是泛型和反射,那么你只需要提供一个方法test(?),然后再在实现类中利用反射获取对象。class,获取对象属性,那么你的所有问题的解决了,当然前提是你的所有物品的大概属性还是应该一样。

    总而言之,言而总之:面向对象、泛型、反射、继承就是你要攻克的堡垒,加油吧!

  • 相关阅读:
    第一篇随笔
    我的第一篇博客
    第一次博客
    芜湖
    芜湖~
    起飞
    第一天
    第一篇随笔
    第一篇随笔
    随笔
  • 原文地址:https://www.cnblogs.com/zzj0410/p/4718682.html
Copyright © 2011-2022 走看看