当前位置:首页 >> 中医减肥 >> 熟食:面向对象设计的SOLID原则

熟食:面向对象设计的SOLID原则

发布时间:2023-04-23

lic interface PeelOff { void peelOff();}public class ApplePeelOff implement PeelOff { void peelOff() {}}public class BananaPeelOff implement PeelOff { void peelOff() {}}public class PeelOffFactory { private Map map = new HashMap(); private init() {}}public static void main(){ String type = "apple"; PeelOff peelOff = PeelOffFactory.getPeelOff(type); peelOff.pealOff();}里大体上型代替法则(L)

Let q(x) be a property provable about objects of x of type T. Then q(y) should be provable for objects y of type S where S is a subtype of T.

称大代替法则(Liskov Substitution Principle,LSP)的假设是:所有引用数据并不一定的地方才才会能透明地适用其可数的都可。恰当地话说:所有父类能注意到的地方,可数就可以注意到,并且代替了也可能才会注意到任何严重错误。

再一通过示例的方法有都和:

例如下面Parent类注意到的地方,可以代替变成Son类,其之前Son是Parent的可数。这就决定可数的所有相近方法有,都才才会遵循父类的期限内,否则当父类代替为可数时就才会出错。这里父类的期限内,不不过于可能常指的是文法本质上的期限内,除此以外借助于上的期限内。

public class Parent { public void hello throw NullPointerException() { }}public class Son extends Parent { public void hello throw NullPointerException() { }}Parent obj = new Son();// 等价于Son son = new Son();以过于网除去法则(I)

A client should never be forced to implement an interface that it doesn't use or clients shouldn't be forced to depend on methods they do not use.

以过于网除去法则(Interface Segregation Principle,ISP)的假设是:类除此以外的相反关联应当建立在最小的以过于网上。恰当地话说:以过于网的内容一定要尽可能地小,能有多小就多小。

这个法则比方话说,举个例子来话说,我们对外缺少API以过于网一站式,加载方可能有很多个,很多时候我们才会缺少一个大而全的以过于网给各有不同的加载方,但有些时候加载方A只适用1、2、3 这三个方法有,加载方B只适用4、5两个方法有,其他都不须。以过于网受控法则的意思是,你应当把 1、2、3 具体化出来作为一个以过于网,4、5 具体化出来作为一个以过于网,这样以过于网密切关系就受控泛化了。

这样做到也是为了更好地受控发生变化,增高内部删去导致的几率。在插件结构设计之前,ISP首倡不用将一个大而全的以过于网扔给预设,而是将每个预设注目的以过于网展开受控,分别缺少各有不同的以过于网一站式。

相反;还有法则(D)

Entities must depend on abstractions not on concretions. It states that the high level module must not depend on the low level module, but they should depend on abstractions.

相反;还有法则(Dependency Inversion Principle,DIP)的假设:高层模块不应当相反底层模块,两者都应当相反其具象。具象不应当相反就其,即以过于网或具象类不相反于借助于类,就其应当相反具象,即借助于类不应当相反于以过于网或具象类。恰当地话说,就是话说我们应当一个大以过于网程式设计,通过具象变成以过于网,使各个类的借助于彼此统一,借助于类密切关系的松耦合。

为了遵循这一法则,我们只能适用一种结构设计模大体上型称为相反注入,典型的相反注入通过类的构造函数作为输入参数。在Post类之前通过适用相反注入,我们早已相反Post类自己来假设常指定并不一定的才会话。

public class Post { private Logger _logger; public Post(Logger injectedLogger) { _logger = injectedLogger; } public void CreatePost(Database db, string postMessage) { try { db.Add(postMessage); } catch (Exception ex) { _logger.log(ex.ToString()); } }}SOLID法则的关联

停下来每个法则后,是不是好像懂了,但好像又什么都没记住?那就回来点赞收藏文章吧,以便于近期查找。

我们来看看这几个法则密切关系的关联。ThoughtWorks上有一篇文章话说得挺不错:

实质上权责是所有结构设计法则的基础,开合法则是结构设计的主旨。

称大代替法则强调的是可数代替父类后虚拟机时的正确性,它用来为了让借助于开合法则。

而以过于网受控法则用来为了让借助于称大代替法则,同时它也反映了实质上权责。

相反;还有法则是每一次大体上型程式设计与一个大都可程式设计的交界处,同时它也被用来常指导以过于网受控法则。

恰当地话说:相反;还有法则知道我们要一个大以过于网程式设计,当一个大以过于网程式设计之后,以过于网受控法则和实质上权责法则又知道我们要特别注意权责的整分,不用什么的路都混杂在一起,当我们权责整分明了后,称大代替法则知道我们在适用分家时,要特别注意严格遵守父类的期限内,而相反;还有、以过于网受控、实质上权责、称大代替的最终目标都是为了借助于开合法则。

读到在仍要

一个大都可结构设计的法则有很多,在实质的结构设计每一次之前仅仅遵循所有的法则是不过于切实质的,也不本质,丝毫是一个为重平衡点的每一次。结构设计也不是一个一蹴而就的每一次,而是促使发掘出结构设计的 "坏辣味",然后过后地基础上。

[给你小心翼翼心]赞赏注目,八零后程序员周一分享技术批发![给你小心翼翼心]

如何快速治疗腹泻
眼睛酸痛怎么才能快速缓解
扭伤怎么治疗好的快
容易感冒的人吃什么好
颈椎痛用什么药好得快
标签:
友情链接: