【软件设计原则】七大软件设计原则

1.开闭原则:对扩展开放,对修改关闭。
        例子:咕泡课程:有java,前端,测试等等。每种课程有id,名称,价格。但是都不一样:新建一个抽象的接口Icouce,里面有三个方法,getid,getName,getPrice,新建一个javaCource,继承接口,
重写三个方法。然后
创建一个构造器。然后创建一个测试类,创建抽象接口的具体实现类,给属性赋值。然后就可以得到javaCouce的id,name,privce。 问题是现在课程可能会打折。所以就要创建一个javaDiscountCouse类在里面对
price进行打折。这样就可以在获取折后价格的同时获取到原价了。

    2.依赖倒置原则:高层模块不应该依赖底层模块。两者都应该依赖其抽象。抽象应该依赖细节,细节应该依赖抽象。针对接口编程,不针对实现编程。 可以减少类之间的耦合性,提高系统的稳定性。提高代
码的可阅读性和可维护性,可以降低修改程序造成的风险。

    3.单一职责原则:不要存在一个导致类变更的原因。一个类,接口,方法只负责一项职责。优点:降低类的耦合性,提高类的可阅读性,提高系统的可维护性,降低变更引起的风险。

    4.接口隔离原则:用多个单一的接口,而不是一个统一的接口。客户端不应该依赖不需要的接口。注意:一个类对应一个类的依赖应该建立在最小的接口上,建立单一的接口,不要建立庞大臃肿的解耦。
尽量的细化接口,接口中的方法尽量的少。注意适度原则,一定要尽量的适度。

    5.迪米特法则:一个对象应该对其他对象保持最少的了解,又叫最少知道原则。尽量降低类和类之间的耦合。强调只和朋友交流,不和陌生人说话。朋友,出现在成员变量,方法的输入输出参数中的类为成
员朋友类,出现在方法体内部的类不是朋友类。 

    6.里式替换原则:如果每一个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都替换成O2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。定义扩展:一
个软件实体如果适用一个父类的话,那一定适用于其子类,所有引用父类的地方必须能透明的使用其子类对象,子类对象能够替换父类对象,而程序逻辑不变。
    引申意义:子类可以扩展父类的功能,但是不能改变父类的功能。
        含义1:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
        含义2;子类中可以增加自己特有的方法。
        含义3:当子类的方法重载父类的方法时,方法的前置条件(即方法的输入,入参)要比父类的输入参数要宽松。
        含义4:当子类的方法实现父类的方法时(重写,重载或实现抽象的方法),方法的后置条件(即方法的输出,返回值)要比父类更严格或相等。

    7.合成,聚合复用原则:尽量使用对象组合,聚合。而不是继承达到软件复用的目的。聚合has-a和组合contains-a 优点:可以是系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影
响相对较少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值