代码结构遵循的原则?
代码结构遵循的七大原则:
1.开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放, 对修改关闭。
2.依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象。
3.Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。假设我们有一个 Class 负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。
4.接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
5.迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合。
6.里氏替换原则(Liskov Substitution Principle,LSP)是指如果对每一个类型为 T1 的对象 o1,都有类型为 T2 的对象 o2,使得以 T1 定义的所有程序 P 在所有的对象 o1 都替换成 o2 时,程序 P 的行为没 有发生变化,那么类型 T2 是类型 T1 的子类型。
7.合成复用原则(Composite/Aggregate Reuse Principle,CARP)是指尽量使用对象组合(has-a)/聚合(contanis-a),而不是继承关系达到软件复用的目的。
延伸阅读
idea的六大原则?
.回答:idea的六大原则是:
1.开闭原则(Open Close Principle)
开闭原则的意思是: 对扩展开放,对修改关闭
在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果
简言之,是为了使程序的扩展性好,易于维护和升级
想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点
2. 里氏代换原则(Liskov Substitution Principle)
里氏代换原则是面向对象设计的基本原则之一
里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现
LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为
里氏代换原则是对开闭原则的补充
实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范
3. 依赖倒转原则(Dependence Inversion Principle)
这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体
4. 接口隔离原则(Interface Segregation Principle)
这个原则的意思是:使用多个隔离的接口,比使用单个接口要好
它还有另外一个意思是:降低类之间的耦合度
由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合
5. 迪米特法则,又称最少知道原则(Demeter Principle)
最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
6. 合成复用原则(Composite Reuse Principle)
合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。
windows中遵循原则是?
一、开闭原则
1、开闭原则的定义
2、开闭原则的作用
3、开闭原则的实现方法
二、里氏替换原则
1、里氏替换原则的定义
2、里氏替换原则的作用
3、里氏替换原则的实现方法
三、依赖倒置原则
1、依赖倒置原则的定义
2、依赖倒置原则的作用
3、依赖倒置原则的实现方法
四、单一职责原则
1、单一职责原则的定义
2、单一职责原则的优点
3、单一职责原则的实现方法
五、接口隔离原则
1、接口隔离原则的定义
2、接口隔离原则的优点
3、接口隔离原则的实现方法
六、迪米特法则
1、迪米特法则的定义
2、迪米特法则的优点
3、迪米特法则的实现方法
七、合成复用原则
1、合成复用原则的定义
2、合成复用原则的重要性
3、合成复用原则实现的方法
代码设计的首要原则?
现在主要针对的是代码设计的原则,在设计代码的时候,不能总是想到哪就打到哪,还需要有个大致的流程,否则写出来的代码也是很繁冗,不够简洁。对于自己的代码编程还没达到一个期望的程度,对于代码的设计。主要注意以下的六大原则:
单一职责
一个类或者一个接口,最好只负责一项职责。
开闭原则
一个软件实体如类、模版和函数应该对扩展,对修改关闭;
里氏替换原则
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;
* 子类可以增加自己特有的方法;
* 当子类的方法重载父类的方法时,方法的形参要比父类方法的输入参数更佳宽松;
* 当子类的方法实现父类的抽象方法时,方法的返回值要比父类更加严格;
依赖倒置原则
低层模块尽量都要有抽象类或者接口,或者两者都有;
* 变量的声明类型尽量是抽象类或者接口;
* 使用继承时遵循里氏替换原则;
接口隔离原则
* 一个接口只服务于一个子模块或业务逻辑,服务定制;
* 通过业务逻辑压缩接口中的public方法,让接口看起来更加精悍;
* 已经被污染了的接口,尽量修改,如果变更风险太大,则用适配器模式进行转化;
* 根据具体的业务,深入了解逻辑,用心感知去控制设计思路;
迪米特原则
定义:一个对象应该对其他对象保持最少的了解,其核心精神就是:不和陌生人说话,通俗之意就是一个对象对自己需要耦合关联调用的类应该知道的少;这会导致类之间的耦合度降低,每个类都尽量减少对其他类的依赖。
设计模式6大准则?
设计模式六大原则:
单一职责原则,实现类要职责单一;
里氏替换原则,不要破坏继承体系;
依赖倒置原则,要面向接口编程;
接口隔离原则,在设计接口的时候要精简单一;
迪米特原则,要降低耦合;
开闭原则,要对扩展开放,对修改关闭。(用抽象构建架构,用实现扩展原则)。
面向性能设计的原则?
1.单一职责原则:类的职责要单一,不能将太多的职责放在一个类中。一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小,而且如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。
2.开闭原则:软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其功能。在开闭原则的定义中,软件实体可以指一个软件模块、一个由多个类组成的局部结构或一个独立的类。
3.里氏代换原则:在软件中如果能够使用基类对象,那么一定能够使用其子类对象。把基类都替换成它的子类,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类的话,那么它不一定能够使用基类。
4.依赖倒转原则:代码要依赖于抽象的类,而不要依赖于具体的类;要针对接口或抽象类编程,而不是针对具体类编程。
5.接口隔离原则:接口隔离原则是指使用多个专门的接口,而不使用单一的总接口。每一个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。
(1) 一个接口就只代表一个角色,每个角色都有它特定的一个接口,此时这个原则可以叫做“角色隔离原则”。
(2) 接口仅仅提供客户端需要的行为,即所需的方法,客户端不需要的行为则隐藏起来,应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口。
6.合成复用原则:成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。
7.迪米特法则:简单地说,迪米特法则就是指一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件实体之间通信的宽度和深度。
代码优化的方法和准则?
1、单一职责
代码优化第一步,单一职责原则 (Single Responsibility Principle)。对于一个Java类,应该仅有一个引起它变化的原因,也就是说,一个类中,应该是一组相关性很高的函数、数据的封装。但是这个原则的界限划分的并不是那么清晰,很大程度上要依赖于开发者的个人经验来定。对于单一职责界限的划分最大的问题就是类的职责是什么,如何划分类的职责。
2、开闭原则
开闭原则(Open Close Principle),是Java世界里最基础的设计原则,它指导我们如何建立一个稳定、灵活的系统。开闭原则定义:软件中的对象(类,模块、函数等)应该对于扩展是开放的,对于修改的封闭的。在软件的生命周期内,因为变化、升级、维护等原因需要对软件原有的代码进行修改时,可能会将错误引入原本已经测试过的旧代码,破坏原有系统,因此,当软件需要变化时,我们应该进肯能通过扩展的方式来实现变化,而不是通过修改已有的代码来实现。
3、里氏替换原则
定义:如果对于每一个类型为ClassA的对象a,都有类型为ClassB的对象b,使得以ClassB定义的所有程序P在所有的对象b都替换成a时,程序P的行为没有发生变化,那么类型ClassA是类型ClassB的子类型。然而这段叙述并无卵用,更直接的定义是:所有引用基类的地方必须能透明的使用其子类的对象。里氏替换原则就是基于这两个字:抽象。
4、依赖倒置原则
依赖倒置原则(Dependence Inversion Principle),依赖倒置原则指定了一种特定的解耦形式,使得高层次的模块不依赖于低层次的模块的实现细节的目的,依赖模块被颠倒了。
5、接口隔离原则(Interface Segregation Principle)。
它的定义是:客户端不应该依赖它不需要的接口。另一种定义是:类间的依赖关系应该建立在最小的接口上。接口隔离原则将非常庞大,臃肿的接口拆分成更小的接口和更具体的接口,这样客户只需要知道他们感兴趣的方法。接口隔离原则的目的是系统解开耦合,从而容易重构、更改和重新部署。
6、迪米特原则
迪米特原则(Law of Demeter),也成为最少知识原则:一个对象应该对其他对象有最少的了解。也就是说,一个类应该对自己需要耦合或者调用的类知道的最少,类的内部如何实现与调用者或者依赖者没关系,调用者和依赖者只需要知道它需要的方法即可,其他的一概不管。类与类的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。
产品设计六性原则?
产品设计中的6个设计原则分别是:
1.单一职责原则(六大规则中的小萝莉,人见人爱):描述的意思是每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致。
2.里氏替换原则(六大原则中最文静的姑娘,但却不太招人喜欢):这个原则表达的意思是一个子类应该可以替换掉父类并且可以正常工作。
3. 接口隔离原则(六大原则当中最挑三拣四的挑剔女,胸部极小):也称接口最小化原则,强调的是一个接口拥有的行为应该尽可能的小。
4. 依赖倒置原则(六大原则中最小鸟依人的姑娘,对抽象的东西非常依赖):这个原则描述的是高层模块不该依赖于低层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。
5.迪米特原则(六大原则中最害羞的姑娘,不太爱和陌生人说话):也称最小知道原则,即一个类应该尽量不要知道其他类太多的东西,不要和陌生的类有太多接触。
6.开-闭原则(六大原则中绝对的大姐大,另外五姐妹心甘情愿臣服):最后一个原则,一句话,对修改关闭,对扩展开放。