OOP
单一职责原则(SRP) :类的职责要单一,一个类只能对应一种职责。
开闭原则(OCP):软件实体对拓展是开放的,但对修改是关闭的。
里氏代换原则(LSP):在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。
依赖倒置原则(DIP):要针对抽象层(接口)编程,而不是针对类实现编程。
合成复用原则(CRP):能用组合就不用继承,组合在运行时可以被改变。
迪米特法则(LOD):一个软件实体对其他实体的引用越少越好,或者说如果 两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互。
我的理解:
OCP:OCP就是当软件需要拓展或修改功能时,不能修改原有的已经实现了功能的代码。比如简单工厂模式的缺陷。
LSP:LSP就是强调子类是基类的拓展,不能修改父类原有已实现的功能。
DIP:DIP换句话就是,要针对接口编程,而非实现编程。如Spring的IOC容器实现的依赖注入就是最经典的依赖倒置,将接口的实现注册到IOC容器中,再由Spring来为接口选择适当的实例,这样接口就可以实现运行时动态的选择对象。这样的话,后期如果要修改接口的对象实现,只需要修改一处代码即可。
架构
架构是对结构的作用和系统的行为进行建模,功能在架构下运行。 软件架构是系统设计阶段的初步结果,连接系统的需求和技术上的解决方案。
参考架构:参考部分已存在的软件架构的部分内容。
架构模式:连接系统的需求和技术上的解决方案。
设计模式:是一种设计类的思想、解决方案。
架构模式关注系统架构;系统模式解决子系统中特定的问题;设计模式原则上不影响系统的架构;惯用法是特定程序语言中的模式。
系统的架构可以包含多个架构模式;架构模式可以包含多个设计模式;因此,模式是提高架构的属性。
参考架构可以参考各种已有的架构模式和业务组件来实现自己的功能,架构模式可以包含多种设计模式。
软件架构师:协调委托人、管理开发团队,要求有足够的分析问题、设计系统、沟通及方案评估能力。
设计模式
设计模式是针对有一定复杂度的软件系统,是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述 。
按目的分类:创建型,与对象的产生相关,将对象的创建工作延迟到子类/另一个对象;结构型,处理类/对象的组合;行为型,对象之间如何交互,怎样分配职责;
按范围分类:类模式,类之间的静态继承、编译时已经确定。对象模式,也用继承,但对象的类型在运行时可以发生变化,通过接口/抽象基类实现。
UML
- 继承:Son extends Father
- 实现:Bird implements Fly
- 依赖:方法的入参是ClassB
- 关系强弱:组合>聚合>关联>依赖
- 关联
- 聚合
- 组合
空心箭头,存在继承/实现关系;实心,存在依赖关系。
标签:架构,软件设计,实现,模式,对象,接口,设计模式,引言,体系结构 From: https://www.cnblogs.com/LimeCoder/p/17157140.html