1.开闭原则面试
2.依赖倒置原则算法
3.单一职责原则编程
4.接口隔离原则markdown
5.迪米特法则(最小知道原则)网络
6.里氏替换原则多线程
7.合成/聚合复用原则架构
下面分别具体说明:oop
说的是,再设计一个模块的时候,应当使这个模块能够在不被修改的前提下被扩展.学习
换言之,应当能够在没必要修改源代码的状况下改变这个模块的行为,在保持系统必定稳定性的基础上,对系统进行扩展。url
例如:通常软件功能的升级就须要符合开闭原则,即不去修改原来的代码,而是去增长新功能。
该原则有如下三点说明
这样带来的好处,能够减小类与类之间的耦合性,提升系统的稳定性,提升代码的可读性和可维护性,而且能够下降修改程序所形成的的风险。
例如:咱们在平常开发中拿到需求以后,通常都是面向接口编程,先设计出顶层,在细节的来设计代码的结构。(以抽象为基准比以细节为基准搭建起来的架构要稳定的多)
从概念来讲可能不大好理解,简单的来说,就是咱们平时在编程的时候,
会在一个类上添加各类各样的功能。当将来这些功能须要修改时, 你不得不一遍又一遍的修改这个类,并且有可能致使其余的功能发生问题, 维护起来很麻烦,很难复用,耦合性很大。
若是咱们将这些功能分别用不一样的类来实现,进行解耦,后期的需求变动和维护就会互不影响,可以下降类的复杂度,提升可读性,总的来说就是一个类、接口、方法只负责一项职责
这个原则指导咱们在设计接口时应当注意一下几点:
- 一、一个类对一类的依赖应该创建在最小的接口之上。
- 二、创建单一接口,不要创建功能繁多的总接口。
- 三、尽可能细化接口,接口中的方法尽可能少(不是越少越好,必定要适度)。
该原则符合高内聚低耦合的设计思想,可使类具备很好的可读性、可扩展性和可维护性。咱们在设计接口的时候,应该多花时间思考,既要考虑到业务模型,还须要为之后可能发生的变动作出一些预判。
因为每一个类尽可能减小对其余类的依赖,所以,很容易使得系统的功能模块功能独立,相互之间不存在(或不多有)依赖关系。迪米特法则不但愿类之间创建直接的联系。若是有真的须要创建联系的,也但愿能经过他的友元类来转达。
迪米特原则主要强调只和朋友交流,不和陌生人说话。出如今成员变量、方法的输入、输出参数中的类均可以称之为成员朋友类,而出如今方法体内部的类不属于朋友类 。
即任何基类能够出现的地方,子类必定能够出现。里氏代换原则是继承复用的基石,只有当衍生类能够替换掉基类,软件单位的功能不受影响时,基类才能被真正复用,而衍生类也可以在积累的基础上增长新的行为,里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。在基类与子类的继承关系就是抽象化的具体实现,因此里氏代换原则是对实现抽象化的具体步骤的规范。
当知足继承的时候,父类确定存在非私有的成员,子类确定是获得了父类的这些非私有成员(假设,父类的成员所有是私有的,那么子类没办法从父类继承任何成员,也就不存在继承的额概念了)。既然子类继承了父类的这些非私有成员,那么父类对象也就能够在子类对象中调用这些非私有成员。因此,子类对象能够替换父类对象的位置。
在里氏带环原则下,当需求有变化时,只需继承,而别的东西不会改变。因为里氏代换原则才使得开放封闭称为可能。这样使得子类在父类无需修改就能够扩展。
使用里氏替换原则有如下优势: 一、约束继承泛滥,开闭原则的一种体现。 二、增强程序的健壮性,同时变动时也能够作到很是好的兼容性,提升程序的维护性、扩 展性。下降需求变动时引入的风险
做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是个人iOS交流圈: 无论你是小白仍是大牛欢迎入驻!! 分享内容包括逆向安防、算法、架构设计、多线程,网络进阶,还有底层、音视频、Flutter等等......
本身根据梳理网络来的的开发经验总结的学习方法,无偿分享给你们。须要的话均可以自行来获取下载。 +裙:196800191、 或者是+ WX(XiAZHiGardenia)免费获取! 获取面试资料 简历模板 一块儿交流技术 (资源集合)
换句话说,就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新的对象经过这些对象的委派达到复用已有功能的目的。
该原则可使系统更加灵活,下降类与类之间的耦合度,一个类的变化对其余类形成的影响相对较少。
总结:学习软件设计原则,千万不能造成强迫症。碰到业务复杂的场景,咱们须要随机应变。
在实际开发过程当中,并非必定要求全部代码都遵循设计原则,咱们要考虑人力、时间、成本、质量,不是刻意追求完美,
要在适当的场景遵循设计原则,体现的是一种平衡取舍,帮助咱们设计出更加优雅的代码结构