永发信息网

面向对象设计原则有哪些

答案:2  悬赏:40  手机版
解决时间 2021-03-17 04:46
面向对象设计原则有哪些
最佳答案
SRP 单一职责原则
就一个类而言,应该专注于做一件事和仅有一个引起它变化的原因。
OCP 开放--封闭原则
对于扩展开放,对于修改封闭。
LSP 里氏替换原则
子(继承)类能在程序中代替父类(C#:基类,Java:超类)。
DIP 依赖倒置原则
抽象不依赖于细节,细节应该依赖抽象。(面向抽象编程,C#为面向接口编程)。
ISP 接口隔离原则
接口属于用户类。(接口面用用户类,不用想着和自身层次、方法相关)
REP 重用发布等价原则
重用的粒度就是发布的粒度。(?这个没有具体的认识)
CCP 共同封闭原则
对于需求的响应,一个包中的所以类,有一个共同的响应(改变),而对于包外是不造成影响。
CRP 共同重用原则
包中的所有类共同重用,就是要重用就全部重用。
ADP 无环依赖原则
依赖关系不要存在环。
ADP 稳定依赖原则
朝着稳定的方向进行依赖。
SAP 稳定抽象原则
包的抽象程度应该和稳定程序一致。
全部回答
【java培训】向对象设计原则是oops(object-oriented programming system,面向对象的程序设计系统)编程的核心,但大多数java程序员追逐像singleton、decorator、observer这样的设计模式,而不重视面向对象的分析和设计。甚至还有经验丰富的java程序员没有听说过oops和solid设计原则,他们根本不知道设计原则的好处,也不知道如何依照这些原则来进行编程。 众所周知,java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计。查看apache和sun的开放源代码能帮助你发现其他java设计原则在这些代码中的实际运用。java developmentkit则遵循以下模式:borderfactory类中的工厂模式、runtime类中的单件模式。 原则1:dry(don'trepeatyourself) 即不要写重复的代码,而是用"abstraction"类来抽象公有的东西。如果你需要多次用到一个硬编码值,那么可以设为公共常量;如果你要在两个以上的地方使用一个代码块,那么可以将它设为一个独立的方法。solid设计原则的优点是易于维护,但要注意,不要滥用,duplicate不是针对代码,而是针对功能。这意味着,即使用公共代码来验证orderid和ssn,二者也不会是相同的。使用公共代码来实现两个不同的功能,其实就是近似地把这两个功能永远捆绑到了一起,如果orderid改变了其格式,ssn验证代码也会中断。因此要慎用这种组合,不要随意捆绑类似但不相关的功能。 原则2:封装变化 在软件领域中唯一不变的就是"change",因此封装你认为或猜测未来将发生变化的代码。oops设计模式的优点在于易于测试和维护封装的代码。如果你使用java编码,可以默认私有化变量和方法,并逐步增加访问权限,比如从private到protected和notpublic.有几种java设计模式也使用封装,比如factory设计模式是封装"对象创建",其灵活性使得之后引进新代码不会对现有的代码造成影响。 原则3:开闭原则 即对扩展开放,对修改关闭。这是另一种非常棒的设计原则,可以防止其他人更改已经测试好的代码。理论上,可以在不修改原有的模块的基础上,扩展功能。这也是开闭原则的宗旨。 原则4:单一职责原则 类被修改的几率很大,因此应该专注于单一的功能。如果你把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题。 原则5:依赖注入或倒置原则 这个设计原则的亮点在于任何被di框架注入的类很容易用mock对象进行测试和维护,因为对象创建代码集中在框架中,客户端代码也不混乱。有很多方式可以实现依赖倒置,比如像aspectj等的aop(aspectorientedprogramming)框架使用的字节码技术,或spring框架使用的代理等。 原则6:优先利用组合而非继承 如果可能的话,优先利用组合而不是继承。一些人可能会质疑,但我发现,组合比继承灵活得多。组合允许在运行期间通过设置类的属性来改变类的行为,也可以通过使用接口来组合一个类,它提供了更高的灵活性,并可以随时实现。《effectivejava》也推荐此原则。 原则7:里氏代换原则(lsp) 根据该原则,子类必须能够替换掉它们的基类,也就是说使用基类的方法或函数能够顺利地引用子类对象。lsp原则与单一职责原则和接口分离原则密切相关,如果一个类比子类具备更多功能,很有可能某些功能会失效,这就违反了lsp原则。为了遵循该设计原则,派生类或子类必须增强功能。 原则8:接口分离原则 采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。设计接口很棘手,因为一旦释放接口,你就无法在不中断执行的情况下改变它。在java中,该原则的另一个优势在于,在任何类使用接口之前,接口不利于实现所有的方法,所以单一的功能意味着更少的实现方法。 原则9:针对接口编程,而不是针对实现编程 该原则可以使代码更加灵活,以便可以在任何接口实现中使用。因此,在java中最好使用变量接口类型、方法返回类型、方法参数类型等。《effectivejava》和《headfirstdesignpattern》书中也有提到。 原则10:委托原则 该原则最典型的例子是java中的equals()和hashcode()方法。为了平等地比较两个对象,我们用类本身而不是客户端类来做比较。这个设计原则的好处是没有重复的代码,而且很容易对其进行修改。 总之,希望这些面向对象的设计原则能帮助你写出更灵活更好的代码。理论是第一步,更重要的是需要开发者在实践中去运用和体会。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
伊顺斋拉面地址在什么地方,想过去办事
打印机出纸卷怎么办
f(x)=a 的x减2次方 +1(a>0且a≠1)的图
7.9999保留三位小数
中柏轻型房屋加工厂地址有知道的么?有点事想
重庆农村商业银行(潼南支行)地址在哪,我要去
半岛龙湾是不是集资房
win10无法正常启动怎么修复
有谁知道猪蹄子的卤制方法?
辽宁石油化工大学就业每年都有专场招聘会吗?
少了颗门牙旁边得一个牙2017年可以当兵吗
饶平县地方税务局地址有知道的么?有点事想过
万达广场在那里
三星s7屏幕滑不动是怎么回事
黄仁宇先生对宋辽和议的评价
推荐资讯
以太网有效数据长度为什么不能小于46个字节?
为什么相机那么大,手机相机却可以那么小
伊梦童缘童装店我想知道这个在什么地方
关于吉祥如意的对联有哪些?
中原银行倒闭了保险公司会陪吗
不同型号的室内摄影灯可以在同步器的作用下同
王者荣耀怎么玩不卡 华为用户玩王者荣耀不卡
[ 大学分析化学 ] 计算弱酸性体系中计算溶液
干涸意思相近的词语
嫌货人才是买货人,在婚恋男女中怎么理解?
武陟县三旺物流有限公司在哪里啊,我有事要去
泸定县林业局磨西林业站在什么地方啊,我要过
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?