设计模式:JAVA中有23种设计模式

  1.解决问题最行之有效的思想。

  2.是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

  3.使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

1.单例设计模式:

  解决的问题:保证一个类在内存中的对象唯一性。

  比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。

Runtime()方法就是单例设计模式进行设计的。

如何保证对象唯一性呢?

  1,不让其他程序创建该类对象。

  2,在本类中创建一个本类对象。

  3,对外提供方法,让其他程序获取这个对象。

步骤:

  1,因为创建对象都需要构造函数初始化,只要将本类中的构造函数私有化,其他程序就无法再创建该类对象;

  2,就在类中创建一个本类的对象;

  3,定义一个方法,返回该对象,让其他程序可以通过方法就得到本类对象。(作用:可控)

代码体现:

  1,私有化构造函数;

  2,创建私有并静态的本类对象;

  3,定义公有并静态的方法,返回该对象。

饿汉式:

  class Single{

    private Single(){} //私有化构造函数。

    private static Single s = new Single(); //创建私有并静态的本类对象。

    public static Single getInstance(){ //定义公有并静态的方法,返回该对象。

      return s;

    }

  }

懒汉式:延迟加载方式。

  class Single2{

    private Single2(){}

    private static Single2 s = null;

    public static Single2 getInstance(){

      if(s==null)

      s = new Single2();

      return s;

    }

  }

2.模板方法设计模式:

  解决的问题:当功能内部一部分实现时确定,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。

  abstract class GetTime{

    public final void getTime(){ //此功能如果不需要复写,可加final限定

      long start = System.currentTimeMillis();

      code(); //不确定的功能部分,提取出来,通过抽象方法实现

    l  ong end = System.currentTimeMillis();

      System.out.println("毫秒是:"+(end-start));

    }

    public abstract void code(); //抽象不确定的功能,让子类复写实现

  }

  class SubDemo extends GetTime{

    public void code()//子类复写功能方法

      ...

    }

  }

  new SubDemo.getTime():

转载于:https://www.cnblogs.com/chenyongsai/p/9555247.html

JAVA基础知识总结8(设计模式)相关推荐

  1. java 基础知识总结

    Java基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思 ...

  2. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  3. Java 基础知识总结(下)-王者笔记《收藏版》

    上一篇 Java基础知识学习总结之(上) 下一篇 Java 集合容器篇面试题  (上) java毕业设计项目<100套>推荐 毕设/私活/大佬必备,一个挣钱的开源前后端分离脚手架 2W字梳 ...

  4. java(5)---Java基础知识大全

    Java基础知识大全 一.基础知识:  1.JVM.JRE和JDK的区别:  JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性.  java语言是跨平 ...

  5. Java基础知识(七) 输入输出流

    Java基础知识 输入输出流 1. Java IO流的实现机制是什么 2. 管理文件和目录的类是什么 3. Java Socket是什么 4. Java NIO是什么 5. 什么是Java序列化 6. ...

  6. Java基础知识(二) 面向对象的技术

    Java基础知识 面向对象的技术 1. 面向对象与面向过程有什么区别 2. 面向对象有哪些特征 3. 什么是继承 4. 组合和继承的区别 5. 多态的实现机制 6. 重载和覆盖有什么区别 7. 抽象类 ...

  7. Java基础知识(五) 字符串与数组

    Java基础知识 字符串与数组 1. 字符串的创建与存储的机制是什么 2. "==".equals和hashCode有什么区别 3. String.StringBuffer.Str ...

  8. Java基础知识与集合部分面试题整理

    JAVA基础知识 一.JDK与JRE 1.JDK和JRE的区别 可从面向对象.主要作用和组成部分三方面对比.如下图所示: 2.JDK – Java Development Kit 1). 主要面向开发 ...

  9. java基础知识之加强

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

  10. Java基础知识笔记-11_2-Swing用户界面组件

    Java基础知识笔记-11_2-Swing用户界面组件 这章教程两个版本,一个语法是非lambda表达式版本,另一个是lambda表达式版本 非lambda表达式版本 1 Java Swing概述 J ...

最新文章

  1. Set、Map、和WeakSet、WeakMap
  2. Java发送邮件的简单实现
  3. 让FFMPEG支持实时流“伴随”转码
  4. oracle高级查询案例,oracle高级查询(实例基于scott用户四张表)
  5. 虚拟机上安装完成redhat后无法上网和Xshell无法连接虚拟机的问题
  6. android新拟态实现方法,Android 新拟态UI (Neumorphism)
  7. centos mysql pid_centos7 mysql The server quit without updating PID file(错误解决)
  8. day05【后台】菜单维护
  9. 于Eclipse传导C/C++配置方法开发(20140721新)
  10. 【转】vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限...
  11. ZK 数据传输三:在页面使用SpringUtil获取spring层类再获取数据(jsp页面或zul页面)...
  12. 学习有法,事半功倍 — 在线学习的10个技巧
  13. 零基础自学SQL课程 | UNION 联合查询
  14. 星星之火-51:LTE的物联网技术,Cat-M与NB-IoT的比较
  15. 仓库出入库管理系统32,excel表格系统,内含公式,只需登记出库入库即可
  16. centos7 小图标_Centos7 桌面图标设置
  17. excel中输入身份证号后三位变成0怎么办
  18. HOUR 13 Developing Advanced References and Pointer
  19. NetBeans安装
  20. 盘点5款常用的网络拓扑图制作工具

热门文章

  1. PHP正则表达式怎么匹配多行
  2. Python 发送邮件 和 发送带附件邮件
  3. 设计模式之Adapter
  4. android BufferedOutputStream的使用
  5. 【Android】init.rc
  6. 【C/C++高质量编程 笔记】
  7. Android system.img 打包解包
  8. Java线程之两种方法Runnable和Thread的区别
  9. MFC使用OpenCV在文档窗口中显示图像(支持多图片格式)
  10. DFS BFS 总结