🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。
✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
🏃人生之义,在于追求,不在成败,勤通大道。加油呀!
🔥个人主页:Ethan Yankang
🔥专栏:面试八股文||Java项目
🔥温馨提示:划到文末发现专栏彩蛋
🔥本篇概览:面试回答——可以灵活运用设计模式,如:单例、工厂、策略、责任链、模板方法等设计模式进行项目开发
目录
单例模式 :
单例模式确保一个类只有一个实例,并提供一个全局访问点来获取该实例。
优点:
- 节省系统资源,避免重复创建实例导致的资源浪费。
- 保证全局只有一份数据,有利于维护数据的一致性。 示例:比如一个日志记录器,整个系统只需要一个实例来记录日志。
工厂模式 :
通过工厂类来创建对象,而不是直接由客户端创建。
优点:
- 解耦了产品的创建和使用,客户端不需要知道具体产品的创建细节。
- 方便扩展产品类型,只需要添加新的工厂方法或子类即可。
示例:一个汽车工厂,可以根据不同的需求生产不同类型的汽车。
工厂模式主要有以下三种类型:
简单工厂模式:
使用:有一个工厂类,根据不同的条件创建不同的具体产品类实例。
功能: - 集中了对象的创建逻辑,使得客户端无需关心具体产品的创建细节。 - 通过条件判断来确定创建哪种产品,相对简单直接。
示例:一个生产不同类型手机的简单工厂,根据输入的手机型号来创建相应的手机实例。
工厂方法模式:
使用:定义一个抽象工厂方法,由各个具体工厂子类来实现该方法以创建相应产品。
功能: - 进一步解耦了工厂和产品,每个具体工厂只负责创建一种特定产品。 - 更符合开闭原则,增加新产品时只需创建新的工厂子类,无需修改现有代码。
示例:有一个抽象汽车工厂,不同品牌的汽车工厂继承该抽象工厂并实现创建对应品牌汽车的方法。
抽象工厂模式:
使用:提供一个创建一系列相关或相互依赖对象的接口,而不是单个产品。
功能: - 可以创建一组具有某种关联的产品对象。 - 强调产品系列的概念,便于统一管理和扩展相关产品系列。
示例:一个家具工厂,可以同时生产配套的桌子、椅子等家具,不同风格的家具工厂实现该抽象工厂来生产相应风格的整套家具。
策略模式 :
定义一系列算法,并将每个算法封装成独立的策略类,通过环境类来动态选择具体的策略。
优点:
- 算法的替换和扩展非常方便,无需修改使用算法的代码。
- 增强了代码的灵活性和可维护性。
示例:一个电商系统中,根据不同的促销活动选择不同的折扣策略。
责任链模式 :
将多个处理对象组成一条链,请求沿着链依次传递,直到有一个对象处理它。
优点:
- 实现了请求的发送者和接收者之间的解耦。
- 可以灵活配置处理链的顺序和内容。
示例:在一个审批流程中,不同级别的审批人员形成一个责任链。
模板方法模式 :
在父类中定义算法的框架,将一些具体步骤延迟到子类中实现。
优点:
- 提高了代码的复用性,公共部分在父类中实现。
- 子类可以专注于实现特定的细节。
示例:在一个数据处理流程中,父类定义了数据读取、处理和存储的大致流程,子类实现具体的数据处理逻辑。
💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖
热门专栏推荐
🌈🌈计算机科学入门系列 关注走一波💕💕
🌈🌈CSAPP深入理解计算机原理 关注走一波💕💕
🌈🌈微服务项目之黑马头条 关注走一波💕💕
🌈🌈redis深度项目之黑马点评 关注走一波💕💕
🌈🌈Java面试八股文系列专栏 关注走一波💕💕
🌈🌈算法leetcode+剑指offer 关注走一波💕💕
总栏
🌈🌈JAVA后端技术栈 关注走一波💕💕
🌈🌈JAVA面试八股文 关注走一波💕💕
🌈🌈JAVA项目(含源码深度剖析) 关注走一波💕💕
🌈🌈计算机四件套 关注走一波💕💕
🌈🌈算法 关注走一波💕💕
🌈🌈必知必会工具集 关注走一波💕💕
🌈🌈书籍网课笔记汇总 关注走一波💕💕
🌈🌈考试复习资料 关注走一波💕💕
🌈🌈C/C++技术栈 关注走一波💕💕
🌈🌈GO技术栈 关注走一波💕💕
分栏
🌈🌈JAVA后端技术栈
🌈🌈spring 关注走一波💕💕
🌈🌈redis 关注走一波💕💕
🌈🌈MySQL 关注走一波💕💕
🌈🌈mybatis 关注走一波💕💕
🌈🌈MQ 关注走一波💕💕
🌈🌈微服务 关注走一波💕💕
🌈🌈设计模式 关注走一波💕💕
🌈🌈分布式锁 关注走一波💕💕
🌈🌈JAVA八股文JAVA面试八股文(redis、MySQL、框架、微服务、MQ、JVM、设计模式、并发编程、JAVA集合、常见技术场景) 关注走一波💕💕
🌈🌈JAVA项目(含源码深度剖析)
🌈🌈黑马头条(微服务) 关注走一波💕💕
🌈🌈黑马点评(redis) 关注走一波💕💕
🌈🌈计算机四件套
🌈🌈计算机基础 关注走一波💕💕
🌈🌈计算机基础 关注走一波💕💕
🌈🌈计算机网络 关注走一波💕💕
🌈🌈数据结构与算法 关注走一波💕💕
🌈🌈算法
🌈🌈leetcode 关注走一波💕💕
🌈🌈剑指offer 关注走一波💕💕
🌈🌈必知必会工具集 关注走一波💕💕
🌈🌈书籍网课笔记汇总
🌈🌈CSAPP笔记 关注走一波💕💕
🌈🌈计算机科学速成课 关注走一波💕💕
🌈🌈CS自学指南 关注走一波💕💕
🌈🌈读书笔记与每日记录 关注走一波💕💕
🌈🌈考试复习资料 关注走一波💕💕
🌈🌈C/C++技术栈 关注走一波💕💕
🌈🌈GO技术栈 关注走一波💕💕
📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤收藏✅ 评论💬,大佬三连必回哦!thanks!!!
📚愿大家都能学有所得,功不唐捐!