Java::设计模式
Java设计模式
- 一、概述
- 二、原则
- 三、模式
- 四、总结
一、概述
二、原则
设计模式遵循7 种设计原则,它们分别为开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则和合成复用原则。
这 7 种设计原则是软件设计模式必须尽量遵循的原则,是设计模式的基础。在实际开发过程中,并不是一定要求所有代码都遵循设计原则,而是要综合考虑人力、时间、成本、质量,不刻意追求完美,要在适当的场景遵循设计原则。这体现的是一种平衡取舍,可以帮助我们设计出更加优雅的代码结构。
设计原则 | 描述 | 目的 |
---|---|---|
开闭原则 | 对扩展开放,对修改关闭 | 降低维护带来的新风险 |
依赖倒置原则 | 高层不应该依赖低层,要面向接口编程 | 更利于代码结构的升级扩展 |
单一职责原则 | 一个类只干一件事,实现类要单一 | 便于理解,提高代码的可读性 |
接口隔离原则 | 一个接口只干一件事,接口要精简单一 | 功能解耦,高聚合、低耦合 |
迪米特法则 | 不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度 | 只和朋友交流,不和陌生人说话,减少代码臃肿 |
里氏替换原则 | 不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义 | 防止继承泛滥 |
合成复用原则 | 尽量使用组合或者聚合关系实现代码复用,少使用继承 | 降低代码耦合 |
参考
三、模式
四、总结
参考
分类 | 设计模式 | 简述 | 总结 | 目的 | 案例 |
---|---|---|---|---|---|
创建型设计模式 | 工厂模式(Factory Pattern) | 不同条件下创建不同实例 | 产品标准化,生产更高效 | 封装创建细节 | 实体工厂 |
单例模式(Singleton Pattern) | 保证一个类仅有一个实例,并且提供一个全局访问点 | 世上只有一个我 | 保证独一无二 | CEO | |
原型模式(Prototype Pattern)) | 通过拷贝原型创建新的对象 | 拔一根猴毛,吹出千万个 | 高效创建对象 | 克隆 |
Java::设计模式相关推荐
- java备忘录模式应用场景_图解Java设计模式之备忘录模式
图解Java设计模式之备忘录模式 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态. ...
- JAVA 设计模式 模板方法模式
定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成. 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模 ...
- Java设计模式之策略模式与状态模式
一.策略模式定义 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化. 好了,定义看看就完了,我知道你很烦看定义. 二.策 ...
- JAVA 设计模式 享元模式
用途 享元模式 (Flyweight) 运用共享技术有效地支持大量细粒度的对象. 享元模式是一种结构型模式. 结构 图-享元模式结构图 Flyweight : 它是所有具体享元类的超类或接口,通过这个 ...
- java设计模式 观察者模式_理解java设计模式之观察者模式
在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等.对于这一类问题,很接近java设计模式里面的"观察者模 ...
- Java设计模式-七大设计原则
Java设计模式 设计模式七大原则 设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好 代码 ...
- Java设计模式(备忘录模式-解释器模式-状态模式-策略模式-职责链模式)
Java设计模式Ⅶ 1.备忘录模式 1.1 备忘录模式概述 1.2 代码理解 2.解释器模式 2.1 解释器模式概述 3.状态模式 3.1 状态模式概述 3.2 代码理解 4.策略模式 4.1 策略模 ...
- Java设计模式(访问者模式-迭代器模式-观察者模式-中介者模式)
Java设计模式Ⅶ 1.访问者模式 1.1 访问者模式概述 1.2 代码理解 2.迭代器模式 2.1 迭代器模式概述 2.2 代码理解 3.观察者模式 3.1 观察者模式概述 3.2 代码理解 4.中 ...
- Java设计模式(代理模式-模板方法模式-命令模式)
Java设计模式Ⅴ 1.代理模式 1.1 代理模式概述 1.2 静态代理 1.2.1 静态代理概述 1.2.2 代码理解 1.3 动态代理之JDK代理 1.3.1 动态代理之JDK代理概述 1.3.2 ...
- Java设计模式(装饰者模式-组合模式-外观模式-享元模式)
Java设计模式Ⅳ 1.装饰者模式 1.1 装饰者模式概述 1.2 代码理解 2.组合模式 2.1 组合模式概述 2.2 代码理解 3.外观模式 3.1 外观模式概述 3.2 代码理解 4.享元模式 ...
最新文章
- linux 启动2个tomcat,在LINUX中启动多个TOMCAT
- Eclipse调试Debug技巧
- boost::hana::members用法的测试程序
- java jce 授权_【Java加密】(一)JCE配置加密算法强度不受限授权的安装
- 摘来的去视频网站的广告方法
- php会不会被人工智能取代,人工智能真的会取代前端开发吗?
- vba 判断目标单元格内容改变的代码_【VBA小代码】批量改变单元格部分字符格式...
- c语言算除法会把小数转成整数,在C语言中除法运算为什么没有小数部分?
- 北邮iptv用WindowsMediaplayer打不开的解决的方法
- 新手如何玩转拼多多?需要注意什么?
- Chrome浏览器内置截图工具(不需要安装插件)
- 香港科大研发出Germagic杀菌涂层,可杀灭新冠病毒
- 最新数据显示:2025年中国将拥有世界最大数据圈
- 算法图解——广度优先搜索
- Python生成器next方法和send方法区别详解
- N4,C1,C4汽车(前、后装)芯片NEXTCHIP品牌。
- 单片机编码电位器c语言,基于单片机的数字电位器的设计
- Java编程思想——复用类
- ITE Super IO - 串口
- 雨课堂知识点总结(九)
热门文章
- minu-ui 的 mt-datetime-picker 组件在部分安卓机型上不显示日期只有取消和确认按钮
- 中国十大可行性研究报告公司
- 完整项目持续集成方案
- 【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第四周作业(12)
- PHP搭建织梦网站,织梦官方php服务器环境DedeAMPZ安装教程
- DAE模型——阅读和理解COLLADA文档(1)
- 卷积神经网络是如何实现不变性特征提取的?
- 【Temasek V9.6】CM13.0 多功能实用增强版 for 华为荣耀5X
- SPM12入门案例2
- Balser相机连接以后,采集图像失败