JAVA的23种设计模式---前置:6大基本原则
来源:互联网 发布:js 判断是否等于nan 编辑:程序博客网 时间:2024/06/05 09:19
概要:
该文章参考了《设计模式之禅》一书、百度百科及一些前辈的博客文章
1.该文章阐述了JAVA的6大基本原则;
2.该文章适合初学设计模式的技术人员研习;
3.该文章有许多不足之处,请各位大咖指正,喷子绕道;
正文:
在阐述6大基本原则之前,先说说“高内聚,低耦合”
耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息
内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
高内聚:是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。提高接口、类、模块的处理能力。
重点内容
低耦合:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。
1.开闭原则(OCP原则):软件实体应对扩展开放,对修改关闭,考虑到所有可能变化的因素,留下接口,等待“可能”变为“现实”
优点: a:可以提高复用性 b:可以提高可维护性 c:面向对象开发要求实现: a:抽象约束: 第一,接口或抽象类对扩展进行边界约束,不允许出现接口和抽象类中不存在的public方法 第二,参数类型,引用对象尽量使用抽象类或者接口,而不是实现类 第三,抽象层尽量保持稳定,一旦确定即不允许修改 b:元数据(用来描述环境或数据的数据,配置参数)控制模块行为: 例如spring等各种框架 c:制定项目章程 类似团队开发中约定俗成的各类规范 d:封装变化 第一,相同的变化封装到一个接口或者抽象类中 第二,不相同的变化封装到不同的接口或者抽象类中 找出有变化或者不稳定的点,为这些变化创建稳定的接口,封装可能发生的变化。
2.单一职责原则(SRP原则):应该有且仅有一个原因引起类的变更。类和接口职责单一,注重职责。
优点: a:类的复杂性降低,实现哪个职责有清晰明确的定义 b:可读性提高 c:可维护性、扩展性提高 d:变更引起风险降低要求:接口一定要做到单一职责原则,类的设计尽量做到只有一个原因引起变化。
3.里氏替换原则(LSP原则):只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何异常,但有子类出现的地方,父类就不一定合适。
a:子类必须完全实现父类的方法 b:子类可以有自己的个性 c:重载或实现父类的方法时输入参数可以被放大 d:重写或实现父类的方法时输出结果可以被缩小
4.依赖倒置原则(DIP原则):对抽象进行编程,不要对实现进行编程
a:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。 b:接口或抽象类不依赖于实现类 c:实现类依赖于接口或抽象类作用:减少类间耦合性,降低并行开发风险
5.接口隔离原则(ISP原则):建立单一接口,接口尽量细化,接口的方法尽量少
接口是我们设计时对外提供的契约,通过分散定义多个接口,可预防未来变更的扩散,提高系统灵活性及可维护性。 a:接口尽量要小 b:接口要高内聚 c:系统或模块间的接口采用定制服务 d:接口设计有限度
6.迪米特法则(LoD法则)也称最少知识原则(LKP原则):一个对象应当对其他对象有尽可能少的了解
a:如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,就放置在本类中 b:类间解耦
- JAVA的23种设计模式---前置:6大基本原则
- java设计模式基本原则
- java设计模式 -------- 基本原则
- java设计模式 -------- 基本原则
- Java设计模式--基本原则
- 设计的基本原则(java与模式)
- 设计模式的基本原则
- 设计模式的基本原则
- 设计模式的基本原则
- 设计模式的基本原则
- 设计模式的基本原则
- 设计模式的基本原则
- 面向对象设计的六大基本原则(设计模式6大原则)
- 23种 设计模式---面向对象的基本原则
- java设计模式之基本原则
- 设计模式6大基本原则之(一)
- 设计模式6大基本原则之(二)
- 设计模式预热篇——6大基本原则
- C# string中StringSplitOptions的作用
- linux学习之squid
- zookeeper应用案例——分布式锁
- FastDFS+Nginx+keepalived实现高可用分布式文件服务器
- Android OKHttp 源码解析
- JAVA的23种设计模式---前置:6大基本原则
- Collections类常用方法总结
- c#.net如何将API返回json对象转换成自己想要的List<T>
- 提高jquery 性能方法整理
- Binder invocation to an incorrect interface 异常分析
- 如何下载tizen源码(图文教程)
- ORACLE查询删除重复记录三种方法
- Mysql传统复制空库搭建过程中reset slave以及reset slave all对复制的影响
- java四种位运算