java使用单例与使用static方法的对于和个人理解

最近在重构项目中的老模块,打算引入spring boot对原有项目自己封装的依赖注入模块进行替换。项目中存在大量的工具类,大都是使用static方法编写的,比如时间工具类用于格式化日期,编码工具类用于编码解码。研究了下是否有必要对这些常量方法的类进行单例重构。

首先要说明的是,两种方式都是可以实现功能的,只在一些特殊的场景会有些区别。除非比较感兴趣,一般是没必要太深究

区别和特点:

单例:有实例,有状态

静态方法:无实例,无状态,纯函数

静态方法实现方式的优点是突出了一个简单粗暴,不实例对象,并且由于静态方法是在编译期静态绑定的,性能会有一点提升。对于大部分业务无关的工具类,确实比较适合这种场景。

缺点也很明显,由于不实例化对象,也就不遵守面向对象的设计。什么高内聚低耦合,单元测试,实现替换,AOP代理等等这些面向对象的优势,就都没有了,相较与面向对象会更加难以应对变更。

想用AOP的话,还是使用单例吧

原文地址:https://www.cnblogs.com/feng-gamer/p/11962028.html

时间: 2024-11-03 18:36:42

java使用单例与使用static方法的对于和个人理解的相关文章

java:单例的理解

前言:Java的单例经常用到,今天发现自己有一点新的认识. 懒汉式单例 package com.mwq.singleton; public class Singleton1 { private Singleton1() { } private static Singleton1 single = null; public static Singleton1 getInstance() { if (single == null) { return new Singleton1(); } retur

java的单例

原文出处: 张新强 1. 前言 单例(Singleton)应该是开发者们最熟悉的设计模式了,并且好像也是最容易实现的--基本上每个开发者都能够随手写出--但是,真的是这样吗?作为一个Java开发者,也许你觉得自己对单例模式的了解已经足够多了.我并不想危言耸听说一定还有你不知道的--毕竟我自己的了解也的确有限,但究竟你自己了解的程度到底怎样呢?往下看,我们一起来聊聊看~ 2. 什么是单例? 单例对象的类必须保证只有一个实例存在--这是维基百科上对单例的定义,这也可以作为对意图实现单例模式的代码进行

再看JAVA 设计模式-单例【转】

单例模式大家并不陌生,也都知道它分为什么懒汉式.饿汉式之类的.但是你对单例模式的理解足够透彻吗?今天我带大家一起来看看我眼中的单例,可能会跟你的认识有所不同. 下面是一个简单的小实例: [java] view plaincopyprint? //简单懒汉式 public class Singleton { //单例实例变量 private static Singleton instance = null; //私有化的构造方法,保证外部的类不能通过构造器来实例化 private Singleto

java的单例设计模式(对象的延时加载)考试专用

java的单例设计模式(对象的延时加载) ,称为:懒汉式    考试专用例:package day6; public class Single2 {  //考试专用  ,对象的延时加载 ,外号:赖汉式        private static Single2 s=null;        private Single2(){            }        public static synchronized Single2 getInstance(){  //synchronized

Java之单例设计模式

/*1.单例设计模式: 所谓的单例设计模式:就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例2.如何实现 1.饿汉式 2.懒汉式 3.如何区分 饿汉式: 坏处:对象加载时间过长 好处:饿汉式是线程安全的 懒汉式: 好处:延迟对象的创建 目前的写法坏处:线程不安全. */ public class 单例设计模式 { public static void main(String[] args) {// Bank.getB1(); Order o1 = Order.getInst

黑马程序员——Java基础---单例

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                         单例 设计模式:解决问题最行之有效的方法,让问题简单化,Java中有23种. 单例:解决一个类在内存,只有一个对象 想要保证对象唯一: 1,为了避免其他程序过多建立该类对象,

java设计模式--单例设计模式

java中共有21种设计模式,其中面试中常问的是单例设计模式: 单例设计模式有两种常用的方式:1.懒汉式:1)先私有化构造函数,让此类不能被实例化:(private 类名(){}):2)在类中自己实例化一个空的对象:(private static 类名  对象名=null;):3)构造一个方法,返回本类的对象:在中间增加一个判断语句,如果进来的对象是个空值,就new一个实例化,否则直接返回此对象: 例如: /** * 懒汉式 * @author chenjun *2017-5-2上午9:16:0

单例设计模式和main方法

设计模式就是在大量的实践中总结和理论之后优选的代码结构.编程风格.以及解决问题的思考方式. 说白了设计模式就是在实际编程中逐渐总结出的解决问题的套路,类似于数学公式. 类的单例设计模式:在开发过程中有且只有一个实例化对象. 怎么做到在整个系统运行过程中,这个类只被实例化一次?不论在哪只调用这一个实例? 什么情况下使用单例设计模式? 实例化对象的创建要消耗大量的时间和资源,例如构造方法中的代码行太多.或者频繁的new的新对象没有必要. //饿汉式:一开始就new一个对象出来public class

java的单例设计模式

/* 单例设计模式解决的问题:可以保证一个类在内存中对象唯性一性(数据实现了共享). 如何保证对象唯一性呢?1,不允许其他程序用 ,2,在该类创建一个本实例.3,对外提供一个方法让其他程序可以获取该象.步骤:1,私有化该类构造函数. 2.通过 new 在本类中创建一个对象. 3,定义一个公有的方法,将创建对象返回.*/ public class Test1 { public static void main(String[] args) { // TODO 自动生成的方法存根 Test5 t1=