【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)单例模式:
单例模式,是一种创建型设计模式。