使用面向对象思想进行开发有以下优点:
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。


面向对象设计的原则

       SRP 单一职责原则
        就一个类而言,应该仅有一个引起它变化的原因。

 

        OCP 开放————封闭原则
        软件实体(类、模块、函数等)应该是可以开展的,但是不可修改。
        
        LSP Liskov 替换原则

        子类型必须能够替换掉它们的父类型。

       DIP 依赖倒置原则
        抽象不应该依赖于细节。细节应该依赖于抽象。

        ISP 接口隔离原则
        不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。

        REP 重用发布等价原则
        重用的粒度就是发布的粒度

        CCP 共同封闭原则
        包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。

        CRP 共同重用原则
        一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。

        ADP 无环依赖原则
        在包的依赖关系图中不允许存在环。

        SDP 稳定依赖原则
        朝着稳定的方向进行依赖

        SAP 稳定抽象原则
        包的抽象程度应该和其稳定程度一致。



接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。就像你问的,都有个method1的方法,如果我用接口,我上面就可以one.method1();是吧?那样我new a();就是用a的方法,new b()就是用b的方法 这样不方便吗? 这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同 我用接口来定义对象不就可以做到统一访问了吗?接口主要针对多个类实现它来说的,要是只有一个类当然可以不用接口了.你这样想,我做一个USB接口,有个read()抽象方法,然后mp3类实现,U盘类实现,移动硬盘类实现,这样我用的时候用USB a=new 【类名】;这样a.read();要是我类名里写U盘,就读U盘,写mp3就读mp3,而这个名字可以从属性文件里读,你写哪个就用哪个了,呵呵。