为什么要用设计模式:
刚学编程的朋友也许没怎么注意,注意的是怎样让程序跑起来,但是越往后越是发现,也许我的代码可以写的更简洁,也许重新写一次可以少写几个类,也许。。。。这时,我们考虑的就是代码的美。有人说大家都是用的eclipse,字体一样,格式一样,大小一样,怎么可能谁比谁的代码更美,其实则不然,有的人写的代码太丑了,一个类牵扯了N多个类,看上去就烦,看上去就想吐。这时就引入了设计模式,他能让你的代码更有水准。
什么是设计模式:
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。当然这都是屁话,一个不清楚设计模式的人,理论讲的再好也是对牛弹琴,下面让我们一起进入设计模式的学习。
J2EE常用的设计模式有哪些
1、单例模式 2、抽象工厂模式和工厂模式 3、适配器模式 4、装饰模式 5、观察者模式 6、外观模式
今天我主要学习单例模式,单例模式是用的很多很简单的一种设计模式。
何为单例模式:
单例模式顾名思义就是一个类只允许出现一个对象,而且提供一个返回它的唯一实力的类方法。
单例模式的好处:
1.使内存中只有一个对象,能节省内存空间。
2.能避免繁琐的创建和销毁对象,可以提高性能。
3.避免对共享资源的多重占用。
4.可以全局访问。
什么时候用到单例模式:
1.需要频繁实例化然后销毁的对象。
2.创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
3.频繁访问数据库或文件的对象。
4.对于一个类只需要一个对象。
废话说了这么多,下面看看实例吧:
单例模式分两种:懒汉式单例、饿汉式单例。
懒汉式:
public class Singleton {
private static Singleton singleton = null;//创建一个对象引用
private Singleton(){//构造器私有化
}
public synchronized static Singleton getInstance(){//同步方法返回一个单例对象实例
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
饿汉式:
public class Singleton {
private static Singleton singleton = new Singleton();//创建一个实例对象
private Singleton(){//构造器私有化
}
public static Singleton getInstance(){//返回一个单例对象实例
return singleton;
}
}
两者有什么区别呢?饿汉式在一开始的时候就实例化对象了,用的时候得到这个对象就好了,所以饿汉式的速度快,效率高,但是如果一直没用到就会耗费系统资源;懒汉式则相反,在用的时候才实例化,但是这也出现一个问题,在多线程时,并不能保证这个类只被实例化一次,所以我们加一个synchronized,将其编程同步方法,这样就是一个线程安全的方法了。
鄙人还处于学习状态,请多多包涵
分享到:
相关推荐
共讲解了5种设计模式:工厂模式,抽象工厂,单例设计模式Singleton,业务代理(Business Delegate)类模式(或者:Proxy模式),模板(Template)方法模式. 从设计思路,特点,作用,常用方法等多方面讲解,有示例代码
设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之 Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new 一样频繁. ...
第六章 设计模式的概念与几种常用的J2EE设计模式 第一节 设计模式的概念………………………………………25 第二节 工厂创建模式与单例模式……………………………27 第三节 使用工厂模式实现DAO ……………………...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...
70. MVC设计模式 53 71. Hibernate 54 71.1. Hibernate 介绍 54 71.2. Hibernate 实现原理 55 71.3. Hibernate 优点 56 71.4. Hibernate 的缓存体系 56 71.4.1. 一级缓存: 56 71.4.2. 二级缓存: 56 71.4.3. 缓存...
媒体查询 CSS媒体查询允许开发者基于浏览网站的设备的特性来应用不同的样式申明,最常用的特性是视口宽度。 GCF 谷歌内嵌浏览器框架, 使用此插件,用户可以通过Internet Explorer的用户界面,以Chrome内核的渲染方式...
3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 5.容器提供了众多的辅助类,能加快应用的开发 6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,...