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. input长度随输入内容动态变化 input光标定位在最右侧

    <input type="text" onkeydown="this.onkeyup();" onkeyup="this.size=(this. ...

  3. sublime中如何在浏览器中打开文件?

    SideBarEnhancements 侧边栏增强 SideBarEnhancements本是增强侧边栏的插件,这里将教大家如何用来做sublime text 3浏览器预览插件,并可自定义浏览器预览的 ...

  4. 转: 【Java并发编程】之十三:生产者—消费者模型(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17249321 生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一 ...

  5. 201521123091 《Java程序设计》第10周学习总结

    Java 第十周总结 第十周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 1.本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异 ...

  6. 201521123091 《Java程序设计》第8周学习总结

    Java 第八周总结 第八周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 1.本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集 ...

  7. 【C++】关于pow函数的用法

    在C++中,pow有多个重载函数: 在dev中,pow(int,int)可以执行,但是在别的地方是不可以被编译的:会提示 :error C2668: “pow”: 对重载函数的调用不明确 可以看见,是 ...

  8. 201521123119《Java程序设计》第12周学习总结

    1. 本周学习总结 Q1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doub ...

  9. 巧用 BootStrap --- 栅格系统(布局)轻松搞定网页响应式布局!

    摘要:Bootstrap 为我们提供了一套响应式.移动设备优先的流式栅格系统,合理的使用栅格系统将会使得网站页面布局变得更加简单,在设置了媒体查询之后,响应式网站也无需再单独写了.接下来我以Boots ...

  10. 从instr中截取第一个delimiter之前的内容放到outstr中,返回第一个delimiter之后的位置

    从instr中截取第一个delimiter之前的内容放到outstr中,返回第一个delimiter之后的位置 char *msstrtok(char *instr, char *outstr, ch ...