java软件设计模式只单例设计模式

概述

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

设计模式分为三种类型,共23种
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

今天我们来看一下第一个单例模式的例子。

有时候我们服务器的访问量巨大的时候,使用普通的类方法为每一个访问的用户创建一个对象,而提供的功能大体相同时,就会极大的占据服务器的存储空间,同时损耗CPU,这个时候,我们就希望在服务器中只存在一个对象供所有的方法调用,这就是单例设计模式。

单例设计模式分为两种:

  1. 饿汉设计模式  
  2. 懒汉设计模式

  我们先来看看饿汉设计模式,先看一下实例

  

/**
 * @author MyPc 单例设计模式
 */
class Test {

	static Test test = new Test();

	// 私有化构造方法
	private Test() {
		System.out.println("这是单例设计模式");
	}

	public static Test getTest() {

		return test;
	}

	//main方法
	public static void main(String[] args) {

		Test t1 = Test.getTest();
		Test t2 = Test.getTest();
		if(t1 == t2){
			System.out.println("對象相同");
		}
	}
}

  在这个单例设计设计模式中,我们能够看到一个很重要的一步,就是私有化构造方法。

  我们知道在new一个类对象时,会同时调用该类的构造方法,所以默认情况构造方法是public型的,在单例设计模式中,我们将类的构造方法设为private,就会让别的类无法创建该类的对象,同时我们在该类的内部创建一个静态的该类的自己的对象,并向外提供一个静态的方法调用这个对象,这样就能保证该类的对象始终只有一个。这就是饿汉单例模式,下面我们再看一下懒汉单例模式:

/**
 * @author MyPc 单例设计模式
 */
class Test {

	static Test test;

	// 私有化构造方法
	private Test() {
		System.out.println("这是单例设计模式");
	}

	public static Test getTest() {
		if(test == null){
			test = new Test();
		}
		return test;
	}

	//main方法
	public static void main(String[] args) {

		Test t1 = Test.getTest();
		Test t2 = Test.getTest();
		if(t1 == t2){
			System.out.println("對象相同");
		}
	}
}

  相比较饿汉单例模式,饿汉单利模式会存在一个问题,那就是始终会在内存中存在这个对象,不管有没有使用,如果没有使用的话也会造成资源的浪费,这时候懒汉设计模式在单线程下就能避免这个问题,我们能够看到实例中我们一个开始并没有创建对象,只是声明了一下该类的对象,在需要具体调用时再判断是否已经存在该类的对象了,如果存在,返回对象,如果不存在,new一个该对象再返回。

  单例设计模式在某些情况能够极大的节省资源,非常适合访问量大的网站使用。

时间: 2024-10-12 20:41:15

java软件设计模式只单例设计模式的相关文章

java设计模式之单例设计模式

设计模式:解决某一类问题最行之有效的方法. java中23种设计模式. 单例设计模式:解决一类在内存中只存在一个对象. Runtime()方法就是单例设计模式进行设计的. 解决的问题:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的. 1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象. 2.还为了让其他程序可以访问该类对象,只好在本类中自定

设计模式总纲——单例设计模式

前两天写了设计模式总纲,今天就来讲讲我们在工程代码中最最最常用的设计模式了——单例设计模式,这个模式在工程代码上的出现率几乎为99.99999%,但是虽然很常用,但是用的好的人却不多,今天我们就来深入的说一说单例设计模式. 在学习一项新的知识之前,我们都要向自己提出三个问题,为什么要用这个知识,这个知识用在哪里,这个知识怎么用?既 why,where,how,3W模式,我们先来谈谈为什么需要单例设计模式,先来想想,如果一个工具类,比如一个读取配置文件的工具类,这类工具只是特定的功能类,既读取指定

设计模式之-----------单例设计模式

饿汉式: class Single { //   提前做好! private static final Single s = new Single(); //  私有化 构造函数  无法使用new 创建对象! private Single(){} //  对外提供接口 public static Single getInstance() { return s; } } 懒汉式: 懒汉 顾名思义  就是懒呗 什么时候用到 什么时候创建! class Single1 { private static

java设计模式_single(单例设计模式)

设计模式:解决某一类问题最行之有效的方法,java中有23种设计模式 一.单例设计模式概述: 1.解决一个类在内存中只有一个对象(保证一个类仅有一个实例,并提供一个访问他的全局访问点)  2.要保证对象的唯一: 1.为了避免其他程序过多的建立该类对象,先禁制其他程序建立该类对象 2.为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象 3.为了 方便其他程序对自定义对象的访问,可以对外提供一些访问方式 3.代码实现步骤: 1.将构造函数私有化 2.在类中创建一个本类对象 3.给外部提供

【设计模式】单例设计模式的N中Java实现方法

特点 单例模式的特点: 1.只能有一个实例: 2.必须自己创建自己的一个实例: 3.必须给所有其他对象提供这一实例. 饿汉式单例模式 也称为预先加载法,实现方式如下: [java] view plaincopy class Single { private Single()( Syustem.out.println("ok"); ) private static Single instance = new Single(); public static Single getInstan

Java设计模式之一 单例设计模式

1.什么叫设计模式: 设计模式的概念首先来源于其它行业:建筑业,在早起建房子的时候,肯定是经验缺乏.显得杂乱无序的,这就会造成很多问题,在行业发展过程,通过不断的经验积累,前辈们针对这些问题提出了合理解决方案,这就是设计模式,参照设计模式往往可以解决很多问题,在计算机编程方面,也会出现类似问题,所以牛人们把这些解决问题的方案进行归类和总结,形成了面向对象编程的23种设计模式. 2.单例模式(特点): Java中单例模式定义:"一个类有且仅有一个实例,并且自行实例化向整个系统提供."通过

Java设计模式之单例设计模式(Singleton)

单例设计模式 单例模式在日常开发中用的也比较多,顾名思义就是一个类的对象在整个系统中只能有一个 优点: 1.单例模式会阻止其他对象实例化其自己的单例对象副本,从而确保所有对象都访问唯一实例 2.由于在整个系统中指存在一个实例对象,避免了频繁的创建和销毁对象,因此可以节约系统资源 3.避免了对共享资源的多重占用 4.自行创建这个单例对象,避免使用时再去创建 缺点: 1.单例模式没有抽象层,所以扩展性比较差 2.不适用于变化的对象,如果同一类型的对象需要在不同的场景下使用,单例就会引起数据的错误 3

java设计模式之单例设计模式和多例设计模式

单例设计模式:构造方法私有化,在类的内部定义static属性和方法,利用static方法来取得本类的实例化对象:无论外部产生多少个实例化对象,本质上只有一个实例化对象 饿汉式单例设计 class Singleton{ private static final Singleton INSTANCE = new Singleton();//产生一个实例化对象 private Singleton(){}//封装构造方法 public static Singleton getInstance(){ re

Java基础小常识- 单例设计模式,-(9)

一.单例设计模式 1.定义:就是可以保证一个类在内存中的对象唯一性,单例设计模式有两种方式,一种饿汉式(实际开发中用),一种懒汉式(面试中用) 必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性. 2.如何保证对象唯一性 1)不允许其他程序用new创建该类对象 2)在该类创建一个对象实例 3)对外提供一个方法让其他程序可以过去该对象 3.实现步骤 1)私有化该类构造函数 2)通过new在本类中创建一个本类对象 3)定义一个公有的方法,将创建的对象返回 4.实例演示 //饿汉式,类