Java中的几种设计模式

如果从事JAVA相关的开发,都不可避免的要用到抽象和封装,这是JAVA的一个特点,同时也是每个开发者必须掌握的,JAVA是这样,Android更是如此。而设计模式就是告诉我们应该如何写出高效且更具应用性和拓展性的代码,最近也是学习了几类比较常用的设计模式,下面一一列举出来,虽然说的不细,但是应该知道的我会做个总结。

#####单例设计模式#####

单例设计模式的一般定义:一个类中只允许有一个实例。

实现思路:让类的构造方法私有化,同时提供一个静态方法去实例化这个类。

代码 :

static class SingleTon {
        private static SingleTon instance;
        private SingleTon(){};
        public static SingleTon newInstance() {
            if(instance==null) {
                synchronized (SingleTon.class) {
                    if(instance==null) {
                        ins和tance=new SingleTon();
                    }
                }
            }
            return instance;
}

这是一个较为标准的单例模式,为了安全我给他加了锁,然而这样写并不是最好的写法。单例模式有两种写法,懒汉写法和饿汉写法。

懒汉式:在静态方法中初始化。时间换空间。(不推荐,时间很重要)

饿汉式:在声明对象就初始化。空间换时间。(推荐,空间不是问题)

所以,在实际开发中用的更多的是饿汉写法,可以对这个类加锁,在变量声明的时候就初始化。具体如何实现这里我就不介绍了,可以自己去实现。

#####简单工厂设计模式#####

简单工厂设计模式的一般定义:简单工厂又叫静态工厂,由一个工厂对象决定创建哪一个产品对象。

实现思路:写一个类,让他制造出我们想要的对象。

代码:

public class 学生工厂  {
    public static 学生 getStudent(int type) {
        switch (type) {
        case 学生类型.学神:
            return new 学神();
        case 学生类型.学霸:
            return new 学霸();
        case 学生类型.学弱:
            return new 学弱();
        case 学生类型.学渣:
            return new 学渣();
        default:
            break;
        }
        return null;
    }
}

通过这个工厂,我们可以很方便的生产出我们想要的对象。这里我用伪代码表示,为了更加形象,实际中这样的写法是绝对不允许的!

#####适配器设计模式#####

适配器模式的一般定义:某类继承这个适配器,从而实现我们需要实现的方法。

实现思路:通过写一个适配器类,里面写了所有的抽象方法,但是这些方法是空的,并且适配器类要定义成抽象的,如果适配器类可以自己实现就没有意义了。适配器的作用,继承适配器,重新需要重新的方法就可以了,简化操作。

优点

* 客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性。

缺点

* 需要额外的编写代码,增加了工作量

代码:

public class Adapter {
	public static void main(String[] args) {
		阿乐 a=new 阿乐();
		a.啪啪啪();
	}
 interface 谈恋爱 {
	 void 吃饭();
	 void 看电影();
	 void 逛街();
	 void 啪啪啪();
 }
 abstract class 恋爱中的妹子 implements 谈恋爱{

	@Override
	public void 吃饭() {
		// TODO Auto-generated method stub

	}

	@Override
	public void 看电影() {
		// TODO Auto-generated method stub

	}

	@Override
	public void 逛街() {
		// TODO Auto-generated method stub

	}

	@Override
	public void 啪啪啪() {
		// TODO Auto-generated method stub

	}
 }
  class 阿乐 extends 恋爱中的妹子{
	 public void 啪啪啪() {
			// TODO Auto-generated method stub
			System.out.println("阿乐:亚美爹,好害羞");
		}
	 }
}

这里我写了一个接口,接口中定义了几个方法,当某类实现这个接口的时候就需要实现这些方法。用时适配器不允许自己实现这些方法,需要交给他的子类去继承,让子类选择需要实现什么代码,Android中的Adapter就是用了适配器模式。

#####模板设计模式#####

模板设计模式的一般定义:定义一个算法骨架将具体实现交给子类去实现。

实现方法:在类中定义一个抽象方法,距离实现交由子类去实现

代码:

public class A {
  public final void run {
           ........
           void howRun();
           ........
   }
 public abstract void  howRun();

}
public class B extends A {
 public void howRun () {
           ..........
   }

}

优点

* 使用模版方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求

缺点

* 如果算法骨架有修改的话,则需要修改抽象类

好了,就先介绍那么多,以后我会慢慢补充,希望这篇博文对你有所帮助。

时间: 2024-10-27 08:10:34

Java中的几种设计模式的相关文章

[设计模式](转)Java中的24种设计模式与7大原则

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; text-decoration: none; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: poin

浅析Java中的23种设计模式

前言 设计模式不论是在我们学习编程,还是在工作和面试过程中,都会涉及到的一个问题,所以了解和学习好设计模式,是我们每一位码农必须要具备的技能,对以后的发展和自己技能的提升都有好处. 什么是设计模式(Design Patterns)?          设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结. 为什么使用设计模式?         使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性. 设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共

Java中的24种设计模式与7大原则 (转)

一.创建型模式 1.抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.2.生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.3.工厂模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子

Java中的24种设计模式与7大原则

一.创建型模式 1.抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.2.生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.3.工厂模式(factory method pattern): 定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实例化推迟到子

java中的四种单例实现方式

在java中,单例设计模式是非常常见的设计模式,对单例设计模式的概念,不做过多的介绍,下面将逐一介绍四种单例设计模式: 1.第一种单例设计模式 1.1 代码实现 package com.singleton.one; /**  * 第一种单例设计模式  * @author Administrator  *  */ public class SingleTonOne { // 实例化 private static SingleTonOne instance = new SingleTonOne();

笔记:Java中的单例设计模式

之前接触过单例模式,当初不明白这样的设计用意,今天特地研究了下java中的单例设计模式的用处及用法. 单例模式:单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.一个类有且仅有一个实例,并且自行实例化向整个系统提供. 单例模式的用处:一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号)生成器.如在Windows中就只能打开一个任务管理器.如果不使用机制对窗口对象进行唯一化,将

Java中的五种单例模式实现方法

[代码] Java中的五种单例模式实现方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package s

Java中的几种默认

1.每个类都默认导入 import java.lang.*; 2.如果一个类没有定义构造方法,则默认提供公开无参构造方法 3.在类中,访问成员变量或成员方法,如果不加引用,默认加上"this." 4.在构造方法中,如果第一行不是"this(...)"或"super(...)" ,默认为"super();" 5.在接口中,属性默认为public static final 方法默认为public abstract 6.如果一个类没

JAVA中的四种引用以及ReferenceQueue和WeakHashMap的使用示例

简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用).SoftReferenc(软引用).WeakReferenc(弱引用).PhantomReference(虚引用)的作用.同时我们还将介绍ReferenceQueue和WeakHashMap的功能和使用示例. 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. JAVA中的四种引用 四种引用中,软引用.若引用.虚引用都需要相关类来创建.创建的时候