【Java的23种设计模式篇之3个核心问题】
1、什么是Java的23种设计模式?
2、解释下工厂模式、单例模式、观察者模式等常见的设计模式?
3、在什么情况下,你会使用这些设计模式?
……
五、设计模式(3个)
1、什么是Java的23种设计模式?
设计模式就是让程序实现“高内聚低耦合”的软件开发解决方案。
Java的设计模式,分为3类23种设计模式,我的记忆顺口溜是“5创7结11行”。
下面依次简单讲解下23种设计模式:
1)从迭代器开始,我们将类中数据结构的遍历和类的功能实现分离出来,本质上使用了工厂模式;
2)适配器模式,它将不同的接口进行适配,从而便于版本的兼容性以及其他功能;
3)模板方法,使用模板面向抽象编程,便于新的子类的实现和管理;
4)工厂模式,其实借用了模板模式来创建产品,是一种非常重要用处很广的一种方法;
5)单例模式,有懒汉式、饿汉式等,生成关于某个类全局唯一的对象,注意多线程的影响;
6)原型模式,用来复制复杂的对象,使用了e方法;
7)Builder建造者模式,用一个新的类对已有的抽象接口进行整合和编程,从而构建出我们想要的东西;
8)抽象工厂模式,使用了工厂模式,组合模式等模式,面向抽象编程,将抽象零件组装成抽象产品,便于具体工厂的创建,提高了代码的组件化和复用性;
9)桥接模式,将类的功能层次和实现层次分割开来,便于对应的扩展和使用;
10)策略模式,可以整体的替换策略,使用也很广泛;
11)组合模式,保证了同根同源,通过委托添加自己构成递归,树形结构,将具有树形特点的对象组合起来;
12)装饰器模式,和组合模式的结构类似,同样是递归结构,从而可以不断的装饰,增加新的功能,很好用;
13)visitor访问者模式,通过在类外访问类中的数据结构从而得到想要的结果,便于程序的可扩展性和组件化;
14)责任链模式,推卸责任,根据问题的大小来考虑自己释放处理,本质是链表,便于职责分明;
15)外观模式,通过整合各个类之间的调用关系,组建成了统一的接口(API),便于外部类的调用;
16)仲裁者模式,将很多类之间互相关联的关系交给仲裁者处理,省去了各个类之间的嵌套和调动,有利于高内聚和低耦合,思路清晰,便于扩展;
17)观察者模式,通过互相委托从而能够在被观察的类发生改变的时候得到相应的改变的信息并且处理;
18)备忘录模式,通过在某一时刻的状态保存下来,便于恢复,在游戏中使用的比较多;
19)状态模式,将状态当做类,从而职责分明,解除了很多繁琐的if和else这些分支逻辑,便于扩展;
20)享元模式,轻量级对象,通过共用不变对象来实现;
21)代理模式,懒加载真正的服务器,加快访问速度,代理是帮助服务器代理的;
22)命令模式,将命令当做类,通过保存一些列命令,从而能够随时执行这些命令,需要清除命令的本质就是一些操作和数据;
23)解释器模式,利用编程原理的方法,来更高层次的封装代码,将自己开发的Java代码当做编译系统,从而不用改变Java代码只修改更高语言层次的代码就能实现不同的功能。
…
2、解释下工厂模式、单例模式、观察者模式等常见的设计模式?
工厂模式、单例模式和观察者模式都是是常见的软件设计模式。
它们各自解决了不同的问题,并在不同的场景下得到应用。
1)工厂模式:
工厂模式是一种创建型设计模式,它提供了一种在不指定具体类的情况下,创建对象的方法。
工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式。
(1)简单工厂模式
它是使用一个单独的工厂类,来负责创建所有的产品对象。
适用于,创建对象较少,且创建过程简单的场景。
(2)工厂方法模式
它是定义了一个创建对象的接口,但由子类决定,要实例化的类是哪一个。
适用于,需要添加新产品时,无需修改现有代码的场景。
(3)抽象工厂模式
它则允许客户端,创建并使用多个产品组合,而无需关心具体产品的实现细节。
2)单例模式:
单例模式,是一种创建型设计模式。
它确保一个类只有一个实例,并提供一个全局访问点,来访问该实例。
单例模式解决了,全局使用的类,频繁被创建和销毁的问题,节省了系统开销。
常见的应用场景,包括Windows的任务管理器、回收站、网站的计数器、应用程序的日志应用、数据库连接池的设计,以及多线程的线程池的设计等。
3)观察者模式:
观察者模式是一种行为型设计模式。
它定义了一种一对多的依赖关系,让多个观察者对象,同时监听某一个主题对象。
当主题对象状态发生改变时,它的所有依赖者(观察者)都会收到通知并自动更新。
观察者模式,适用于关联行为场景…
如用户关注某个商品的价格,当商品降价时自动通知用户等等。
以上这些设计模式,在软件开发中广泛应用。
它们可以提高代码的可维护性、可扩展性和可重用性,使软件更加灵活和易于管理。
…
3、在什么情况下,你会使用这些设计模式?
在Java开发中,使用设计模式的场景,多种多样…
具体取决于项目的需求、代码的可维护性、可扩展性,以及团队的协作方式等因素。
以下是使用Java的7种常见设计模式的情况:
1)单例模式:
当需要确保一个类只有一个实例,并提供全局访问点时…
如管理配置信息、数据库连接池等。
2)工厂模式:
当需要解耦对象的创建与使用,或者需要动态地创建对象时…
如根据配置文件,或用户输入创建不同的对象。
3)适配器模式:
当需要将一个类的接口,转换为客户端所期望的另一种接口时…
使原本不兼容的类,可以合作。
4)观察者模式:
当需要在对象之间,建立一对多的依赖关系…
以便当一个对象状态改变时,通知其所有依赖者。
5)策略模式:
当需要根据不同的策略,执行某个行为…
并且这些策略,可以动态地改变时,如排序算法的选择。
6)模板方法模式:
当需要定义一个操作的算法骨架,而将一些步骤,延迟到子类中实现时。
7)迭代器模式:
当需要遍历一个聚合对象,而又不想暴露其内部表示时。
此外…
还有装饰者模式、代理模式、组合模式、状态模式、职责链模式、桥接模式、原型模式、建造者模式、外观模式、享元模式、访问者模式等等…
它们各自适用于不同的场景和需求。
总结:
设计模式,是为了解决在软件设计中,经常遇到的问题,而提出的最佳实践。
它们并不是必须使用的,但在很多情况下,使用设计模式可以使代码更加清晰、易于维护和扩展。
所以,在选择使用哪种设计模式时,需要根据项目的实际情况,以及需求进行权衡和选择。
……
以上,就是今天的分享啦!
希望,对你有那么一点点、一丢丢、一戳戳地帮助哈~
所以哩…
评论、收藏、关注一键三连可好?
推荐票、月票、打赏,好伐?!
嘻嘻…