《Java程序性能优化》第二章 读书笔记 I

第二章 设计优化
2.1 善用设计模式

这本书归纳总结了一些经典的与性能有关的设计模式。并没有涵盖所有的设计模式。

  • 1.单例模式

使用场景:它可以确保系统中一个类只产生一个实例。
好处:
a.对于频繁使用的对象,可以省略创建对象所花费的时间,这对于重量级对象而言,是非常可观的一笔系统开销。(比如数据库连接)
b.由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC压力,缩短GC停顿时间。

  • 2.代理模式

使用场景:
a.安全原因。需要屏蔽客户端直接访问真是对象。
b.远程调用。需要使用代理类处理远程方法调用的技术细节。
c.提升系统性能。对真实对象进行封装,从而达到延迟加载的目的。

  • 3.享元模式

使用场景:提高性能。如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝。
好处:同单例模式

  • 4.装饰者模式

场景:
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。
在不想增加很多子类的情况下扩展类。
书中对它运行原理的解释:【通过委托机制,复用系统中的各个组件,在运行时,可以将这些功能组件进行叠加,从而构造一个“超级对象“,使用拥有这些组件的功能。而各个子功能模块,被很好地维护在各个组件的相关类中,拥有整洁的系统结构。】这个解释比较抽象,最好结合实际的例子进行讲解,书中的例子也比较好。文本内容的包装,jdk的OutputStream等

好处:
分离功能和性能组件,从而提升模块的可维护性并增加模块的复用性。

  • 5.观察者模式

场景:一个对象的行为依赖另一个对象的状态。
好处:如果不适用观察者模式提供的通用结构,而是实现其类似的功能,则只能在另一个线程中不停监听对象所依赖的状态。在一个复杂系统中,可能会因此开启很多线程来实现这一功能,这将使系统的性能产生额外的负担。观察者模式可以在单线程中,使某一对象,及时得zhi自身所依赖的状态的变化。

  • 6.Value Object模式

系统的不同层次之间通信的时候,Value Object模式提倡将一个对象的各个属性进行封装,将封装后的对象在网路中传递,从而使系统用户更好的交互模式,并且减少网络通信数据,从而提高系统性能。

  • 7.业务代理模式

业务代理模式是对Value Object模式的递进,将一组由远程方法调用构成的业务流程,封装在一个展示层的代理类中。
这里写图片描述
好处:
业务代理模式将一些业务流程封装在前台系统,为系统性能优化提供了基础平台。在业务代理中,不仅可以复用业务流程,还可以视情况为展示层组件提供缓存等功能,从而减少远程方法调用次数,降低系统压力。

发布了37 篇原创文章 · 获赞 9 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/zzyymaggie/article/details/78609471