1.单例模式(有的书上说叫单态模式其实都一样)

该模式主要目的是使内存中保持1个对象。看下面的例子:

package org.sp.singleton;

//方法一

public class Singleton {

//将自身的实例对象设置为一个属性,并加上Static和final修饰符

private static final Singleton instance = new Singleton();

//将构造方法设置成私有形式

private Singleton() {

}

//通过一个静态方法向外界提供这个类的实例

public static Singleton getInstance() {

   return instance;

}

}

//方法二

class Singleton2 {

private static Singleton2 instance2 = null;

public static synchronized Singleton2 getInstance() {

   if (instance2 ==
null)

    instance2 =
new Singleton2();

   return instance2;

}

}

注:这二个方法实现了一样的功能,但个人推荐采用第一种方法。

2.工厂模式

该模式主要功能是统一提供实例对象的引用。看下面的例子:

public class Factory{

public ClassesDao getClassesDao(){

   ClassesDao cd = new
ClassesDaoImpl();

   return cd;

}

}

interface ClassesDao{

public String getClassesName();

}

class ClassesDaoImpl implements ClassesDao {

public String getClassesName(){

  
System.out.println("A班");

}

}

class test

{

public static void main(String[] args){

   Factory f = new
Factory();

  
f.getClassesDao().getClassesName();

}

}

这个是最简单的例子了,就是通过工厂方法通过接口获取对象的引用

3.建造模式

该模式其实就是说,一个对象的组成可能有很多其他的对象一起组成的,比如说,一个对象的实现非常复杂,有很多的属性,而这些属性又是其他对象的引用,可能这些对象的引用又包括很多的对象引用。封装这些复杂性,就可以使用建造模式。

具体看看下面的例子:

4.门面模式

这个模式个人感觉像是Service层的一个翻版。比如Dao我们定义了很多持久化方法,我们通过Service层将Dao的原子方法组成业务逻辑,再通过方法向上层提供服务。门面模式道理其实是一样的。

具体看看这个例子:

interface ClassesDao{

public String getClassesName();

}

class ClassesDaoImpl implements ClassesDao {

public String getClassesName(){

   return "A班";

}

}

interface ClassesDao2{

public String getClassesName();

}

class ClassesDaoImpl2 implements ClassesDao {

public String getClasses2Name(){

   return "B班";

}

}

class ServiceManager

{

private ClassesDao cd = new ClassesDaoImpl();

private ClassesDao2 cd2 = new ClassesDaoImpl2();

public void printOut(){

  
System.out.println(cd.getClassesName()+"  
"+cd2.getClassesName());

}

};

虽然这个例子不全,但基本意思已经很明显了。

5.策略模式

这个模式是将行为的抽象,即当有几个类有相似的方法,将其中通用的部分都提取出来,从而使扩展更容易。

看这个例子:

package org.sp.strategy;



public class Addition extends Operation {

@Override

public float parameter(float a, float b) {

   return a+b;

}

}

package org.sp.strategy;



public class Division extends Operation {

@Override

public float parameter(float a, float b) {

   return a/b;

}

}

package org.sp.strategy;



public class Multiplication extends Operation{

@Override

public float parameter(float a, float b) {

   return a*b;

}

}

 

package org.sp.strategy;



public class Subtration extends Operation {

@Override

public float parameter(float a, float b) {

   return a-b;

}

}

 

package org.sp.strategy;



public abstract class Operation {

public abstract float parameter(float a, float b);

}

package org.sp.strategy;



public class Condition {

public static final Addition add = new Addition();

public static final Subtration sub = new Subtration();

public static final Multiplication mul = new
Multiplication();

public static final Division div = new Division();



}

package org.sp.strategy;



public class Client {

public static void main(String[] args) {

   float a = 100;

   float b = 25;

  

  
System.out.println(Condition.div.parameter(a, b));

}

}

聊聊Java中几种常用的设计模式的更多相关文章

  1. java中几种常用的设计模式

    参考https://blog.csdn.net/jiyang_1/article/details/50110931 参考https://blog.csdn.net/dean_hu/article/de ...

  2. Java中几种常用数据类型之间转换的方法

    Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...

  3. java 中几种常用数据结构

    Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.几个常用类的区别 1.A ...

  4. Java 中几种常用设计模式

    Java 中一般认为有23种设计模式,当然暂时不需要所有的都会,但是其中常见的几种设计模式应该去掌握. 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模 ...

  5. java中4种常用线程池

    一.线程池 线程池:说白了,就是一种线程使用模式.线程过多会带来调度开销,进而影响整体性能.而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,这避免了在处理短时间任务时创建与销毁线程的代价 ...

  6. JAVA中几种常用的RPC框架介绍

    原文:https://blog.csdn.net/zhaowen25/article/details/45443951

  7. Java中几种日志方案

    .本文记录Java中几种常用的日志解决方案 0x01 Log4j .这应该是一个比较老牌的日志方案了,配置也比较简单,步骤如下 1)添加对应依赖,比如 Gradle 中 dependencies { ...

  8. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  9. Java中23种经典设计模式详解

    Java中23种设计模式目录1. 设计模式 31.1 创建型模式 41.1.1 工厂方法 41.1.2 抽象工厂 61.1.3 建造者模式 101.1.4 单态模式 131.1.5 原型模式 151. ...

随机推荐

  1. 百行go代码构建p2p聊天室

    百行go代码构建p2p聊天室 百行go代码构建p2p聊天室 1. 上手使用 2. whisper 原理 3. 源码解读 3.1 参数说明 3.1 连接主节点 3.2 我的标识 3.2 配置我的节点 3 ...

  2. java多线程设计模式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt220 java多线程设计模式 java语言已经内置了多线程支持,所有实现Ru ...

  3. Servlet和JSP生命周期概述

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt374 Servlet生命周期分为三个阶段: 1,初始化阶段  调用init( ...

  4. Go数组、切片、映射的原理--简明解析

    数组.切片.映射是Golang的最重要的数据结构,下面是对这3种数据结构的一点个人总结: 一.数组 数组是切片和映射的基础数据结构. 数组是一个长度固定的数据类型,存储着一段具有相同数据类型元素的连续 ...

  5. 第4阶段——制作根文件系统之分析init进程(2)

    本节目标: (1) 了解busybox(init进程和命令都放在busybox中) (2) 创建SI工程,分析busybox源码来知道init进程做了哪些事情 (3)  分析busybox中init进 ...

  6. 换个角度审视NAT技术

    NAT (Network address translation,网络地址转换 )是局域网连接到互联网的一个对接工作. 首先要知道NAT是一个技术或者说软件而不是协议 后面你会知道NAT 是偏应用层但 ...

  7. 【Alpha阶段】第六次scrum meeting

    一.会议照片 二.会议内容 姓名 学号 负责模块 昨日任务完成度 今日任务 杨爱清 099 界面设计和交互功能 完成 设计界面 杨立鑫 100 数据库搭建和其他 完成 将数据库与其他模块连接 林 钊 ...

  8. 201521123065《java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 1.Map通过get(key)来获取值: 2.HashMap和Hash ...

  9. 201521123007《Java程序设计》第7周学习总结

    1. 本周学习总结 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 以下是ArrayList的contains源代码: public bool ...

  10. 201521123078 《java程序设计》第十周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 创建线程:定义Thread的子类可以实现Runable接口 线程的控制:线程暂停Thread.sleep() ...