Java中的设计模式与7大原则归纳整理
发布时间 - 2026-01-11 00:41:46 点击率:次Java中的设计模式与7大原则:

一、创建型模式
1、抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.
2、生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.
3、工厂模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类.
4、原型模式(prototype pattern): 当创建给定类的实例过程很昂贵或很复杂时, 就使用原形模式.
5、单例了模式(Singleton pattern): 确保一个类只有一个实例, 并提供全局访问点.
6、多例模式(Multition pattern): 在一个解决方案中结合两个或多个模式, 以解决一般或重复发生的问题.
二、结构型模式
1、适配器模式(Adapter pattern): 将一个类的接口, 转换成客户期望的另一个接口. 适配器让原本接口不兼容的类可以合作无间. 对象适配器使用组合, 类适配器使用多重继承.
2、桥接模式(Bridge pattern): 使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变.
3、组合模式(composite pattern): 允许你将对象组合成树形结构来表现"整体/部分"层次结构. 组合能让客户以一致的方式处理个别对象以及对象组合。
4、装饰者模式(decorator pattern): 动态地将责任附加到对象上, 若要扩展功能, 装饰者提供了比继承更有弹性的替代方案.
5、外观模式(facade pattern): 提供了一个统一的接口, 用来访问子系统中的一群接口. 外观定义了一个高层接口, 让子系统更容易使用.
6、亨元模式(Flyweight Pattern): 如想让某个类的一个实例能用来提供许多"虚拟实例", 就使用蝇量模式.
7、代理模式(Proxy pattern): 为另一个对象提供一个替身或占位符以控制对这个对象
三、行为型模式
1、责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象.
2、命令模式(Command pattern): 将"请求"封闭成对象, 以便使用不同的请求,队列或者日志来参数化其他对象. 命令模式也支持可撤销的操作.
3、解释器模式(Interpreter pattern): 使用解释器模式为语言创建解释器.
4、迭代器模式(iterator pattern): 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露其内部的表示.
5、中介者模式(Mediator pattern) : 使用中介者模式来集中相关对象之间复杂的沟通
和控制方式.
6、备忘录模式(Memento pattern): 当你需要让对象返回之前的状态时(例如, 你的用户请求"撤销"), 你使用备忘录模式.
7、观察者模式(observer pattern): 在对象之间定义一对多的依赖, 这样一来, 当一个对象改变状态, 依赖它的对象都会收到通知, 并自动更新.
8、状态模式(State pattern): 允许对象在内部状态改变时改变它的行为, 对象看起来好象改了它的类.
9、策略模式(strategy pattern): 定义了算法族, 分别封闭起来, 让它们之间可以互相替换, 此模式让算法的变化独立于使用算法的客户.
10、模板方法模式(Template pattern): 在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变算法结构的情况下, 重新定义算法中的某些步骤.
11、访问者模式(visitor pattern): 当你想要为一个对象的组合增加新的能力, 且封装并不重要时, 就使用访问者模式。
七大设计原则:
1、单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】:一个类负责一项职责.
2、里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】:继承与派生的规则.
3、依赖倒置原则【DEPENDENCE INVERSION PRINCIPLE】:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口
4、接口隔离原则【INTERFACE SEGREGATION PRINCIPLE】:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少.
5、迪米特法则【LOW OF DEMETER】:低耦合,高内聚.
6、开闭原则【OPEN CLOSE PRINCIPLE】:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭.
7、组合/聚合复用原则【Composition/Aggregation Reuse Principle(CARP) 】
希望本篇文章对您有帮助
# Java设计模式7大原则
# Java设计模式原则
# Java大原则归
# 浅谈java中OO的概念和设计原则(必看)
# 10个Java程序员熟悉的面向对象设计原则
# 合成聚合复用原则_动力节点Java学院整理
# java面向对象设计原则之合成复用原则示例详解
# 子类
# 提供一个
# 桥接
# 放在
# 多个
# 当你
# 你想
# 而不
# 对其
# 能让
# 更有
# 你可
# 只有一个
# 又不
# 想让
# 将它
# 你将
# 更容易
# 要为
# 转换成
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
如何快速查询网站的真实建站时间?
Firefox Developer Edition开发者版本入口
进行网站优化必须要坚持的四大原则
EditPlus中的正则表达式 实战(1)
什么是javascript作用域_全局和局部作用域有什么区别?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
无锡营销型网站制作公司,无锡网选车牌流程?
如何实现javascript表单验证_正则表达式有哪些实用技巧
使用Dockerfile构建java web环境
公司网站制作价格怎么算,公司办个官网需要多少钱?
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何快速查询域名建站关键信息?
Laravel如何使用Service Container和依赖注入?(代码示例)
Laravel如何使用Livewire构建动态组件?(入门代码)
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
利用vue写todolist单页应用
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Python文件流缓冲机制_IO性能解析【教程】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
微信小程序 闭包写法详细介绍
如何快速生成可下载的建站源码工具?
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
javascript中的try catch异常捕获机制用法分析
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
活动邀请函制作网站有哪些,活动邀请函文案?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
如何在建站主机中优化服务器配置?
千库网官网入口推荐 千库网设计创意平台入口
如何在阿里云香港服务器快速搭建网站?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Angular 表单中正确绑定输入值以确保提交与验证正常工作
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
EditPlus中的正则表达式实战(5)
如何快速登录WAP自助建站平台?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
英语简历制作免费网站推荐,如何将简历翻译成英文?
高端云建站费用究竟需要多少预算?
下一篇:swoole是php的扩展吗
下一篇:swoole是php的扩展吗

