专业的JAVA编程教程与资源

网站首页 > java教程 正文

老程序员的10年Java编程之路,对Java的设计模式谈谈我自己的见解

temp10 2024-09-07 00:17:41 java教程 10 ℃ 0 评论



一、创建型模式

老程序员的10年Java编程之路,对Java的设计模式谈谈我自己的见解

1、普通工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.

2、创建者模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.

我们看一下代码:

还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender。最后,建造者类如下:

测试类:

轻松看出:工厂模式关注的是创建单个产品,而建造者模式则关注创建符合对象,多个部分。因此,是选择工厂模式还是建造者模式,依实际情况而定。

3、抽象工厂模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子类.

4、原型模式(prototype pattern): 当创建给定类的实例过程很昂贵或很复杂时, 就使用原形模式.

这里我们需要注意一下深复制和浅复制的概念

  • 浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。

  • 深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。

5、单例模式(Singleton pattern): 确保一个类只有一个实例, 并提供全局访问点.

这样的模式有几个好处:

  • 某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。

  • 省去了new操作符,降低了系统内存的使用频率,减轻GC压力。

  • 有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。

6、多例模式(Multition pattern): 在一个解决方案中结合两个或多个模式, 以解决一般或重复发生的问题.

二、结构型模式

10年Java程序员老群632119504,欢迎喜欢Java的各位大神小神前来学习交流,每天群里面也会有大佬在线答疑,也有各种项目案例供你自己学习

1、适配器模式(Adapter pattern): 将一个类的接口, 转换成客户期望的另一个接口. 适配器让原本接口不兼容的类可以合作无间. 对象适配器使用组合, 类适配器使用多重继承.我们来看一下类的适配器模式

核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将Source的功能扩展到Targetable里,看代码

测试类:

Adapter类继承Source类,实现Targetable接口

2、桥接模式(Bridge pattern): 使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变.

桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化

3、组合模式(composite pattern): 允许你将对象组合成树形结构来表现"整体/部分"层次结构. 组合能让客户以一致的方式处理个别对象以及对象组合.看图

4、装饰者模式(decorator pattern): 动态地将责任附加到对象上, 若要扩展功能, 装饰者提供了比继承更有弹性的替代方案.

Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,

5、外观模式(facade pattern): 提供了一个统一的接口, 用来访问子系统中的一群接口. 外观定义了一个高层接口, 让子系统更容易使用.

该模式中没有涉及到接口

6、亨元模式(Flyweight Pattern): 如想让某个类的一个实例能用来提供许多"虚拟实例", 就使用蝇量模式.

享元模式的主要目的是实现对象的共享,即共享池,通常与工厂模式一起使用。

7、代理模式(Proxy pattern): 为另一个对象提供一个替身或占位符以控制对这个对象的访问.

这里需要说一下,代理模式的应用场景:

如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:

1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。

2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。

使用代理模式,可以将功能划分的更加清晰,有助于后期维护!

三、行为型模式

大概是这样的。

具体细节,下次再发,谢谢各位看官

最后给各位比较喜欢Java的看官一句劝,Java真的是世界上最简单的的编程语言。这些都很简单,一步一步学习很快就学会了,不存在什么人学不会Java的,别轻易放弃

Java学习群632119504,抓紧学习吧,天可补,海可填,南山可移。日月既往,不可复追!!!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表