
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了Java程序员需要掌握的一些设计模式等内容,而本文我们就再来了解一下,Java编程设计模式类型划分都有哪些。
一、工厂模式
定义:工厂模式是我们常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。
普通工厂:工厂是具体的,产品是抽象的。
抽象工厂:工厂是抽象的,产品是抽象的。
对比工厂模式和抽象工厂模式:
1.工厂模式对产品Product进行了抽象,通过传递ProductType进行动态构造Product。
2.抽象工厂在工厂模式上,又对工厂进行了抽象,抽象了工厂制造提供产品的行为,这样就可以动态设置不同的工厂,生产多种不同品类的产品。
二、单例模式
定义:通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
单例模式应该说是常见的一种设计模式了。
主要优点:
1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
3、有些类如打印机,全局只需要一个或者一种打印机的。
主要缺点:
1、由于单利模式中没有抽象层,耦合性太强,因此单例类的扩展有很大的困难。
2、单例类的职责过重,在一定程度上违背了“单一职责原则”。
3、滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。
因此,在使用单例之前,一定要三思而后行。
三、建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
构建者类似工厂模式,但是区别在于:建造者模式注重零部件的组装过程【具体的创建在产品内部创建】,而工厂方法模式更注重零部件的创建过程。
使用建造者模式的好处:
1.使用建造者模式可以使客户端不必知道产品内部组成的细节(不需要非常多的构造函数)。
2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。
3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
使用建造模式的场合:
1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。
四、原型模式
定义:该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。
使用场景:
(1)在进行网络请求的时候,一些全局性的配置,例如:baseUrl、timeout、retryCount、cacheMode、Interceptor等,我们不希望每次进行网络请求的时候都进行设置,就可以将这些配置存放在一个单例中,每次创建网络请求的时候,在构造方法里先复制拷贝这些全局属性,然后在网络请求里面提供动态设置这些属性的方法,这样就可以省去很多设置操作,从而实现全局配置,动态变化。
(2)在JS里面,对象的继承就是使用原型模式实现的(没有extends),ES6之后才引入了extends。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。