zoukankan      html  css  js  c++  java
  • 五(十二)单例模式

    一、设计模式:简单来说即“套路”;


     二、单例模式:类的单例模式,就是采取一定的方法,保证整个软件系统中,对某个类智能存在一个对象实例;


      如何实现:饿汉式 vs 懒汉式

    饿汉式:当程序未调用时,就创建好了实例;

    懒汉式:什么时候调用对象,什么时候创建;
    三、区分饿汉式 和 懒汉式?
      饿汉式:坏处:导致对象加载时间过长;好处:线程安全;
      懒汉式:好处:延迟加载,坏处:线程不安去;
     
     四、应用:网站的计数器,应用程序的日志应用,数据库连接池,。。。。

    看代码:

     1 public class Day14Singleton14 {
     2     public static void main(String[] args) {
     3         Bank bank1 = Bank.getInstance();
     4         Bank bank2 = Bank.getInstance();
     5         System.out.println(bank1 == bank2);
     6         
     7         Order11 order1 = Order11.getInstance();
     8         Order11 order2 = Order11.getInstance();
     9         System.out.println(order1 == order2);
    10     }
    11 }
    12 
    13 //单例模式的饿汉式
    14 class Bank{
    15     //1.私有化构造器;
    16     private Bank() {
    17         
    18     }
    19     //内部创建类的对象
    20     //要求此对象是静态的;这里对象还没有调用就创建了对象
    21     private static Bank instance = new Bank();
    22     //提供公共的静态方法,返回类的对象
    23     public static Bank getInstance() {
    24         return instance;
    25     }
    26 }
    27 //单例模式的饿汉式
    28 class Bank1{
    29     //1.私有化构造器;
    30     private Bank1() {
    31         
    32     }
    33     //内部创建类的对象
    34     //要求此对象是静态 final:防止用户恶意更改实例;这里对象还没有调用就创建了对象;
    35     private static final Bank1 instance = new Bank1();
    36     
    37 }
    38 
    39 
    40 //单例模式的懒汉式实现
    41 class Order11{
    42     //1.私有化构造器;
    43     private Order11() {
    44         
    45     }
    46     //声明当前类对象,没有初始化
    47     //要求此对象是静态的;这里没有创建对象
    48     private static Order11 instance = null;
    49     //提供公共的静态方法,返回类的对象,调用getInstance时,才创建对象;
    50     public static Order11 getInstance() {
    51         if(instance == null) {
    52             instance = new Order11();
    53             return instance; 
    54         }
    55         return instance; 
    56     }
    57 }
  • 相关阅读:
    在C#程序中模拟发送键盘按键消息
    C# UDPCLIENT多线程实例
    【转】WINFORM下FTP客户端的实现
    抓取屏幕或窗体并保存成图片
    c# 判断窗体已打开则显示为焦点
    【转】C#中dataGridView用法实例分析
    【转】VC6控件小记
    .Net部署二三事之一——如何为VS安装文件MSI制作更新补丁MSP
    [转]C#串口serialPort操作
    VS向IIS发布C#或VB应用程序
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/13387615.html
Copyright © 2011-2022 走看看