zoukankan      html  css  js  c++  java
  • 【JAVA基础&Python】静态方法与单例模式,以及应用场景

    /*
    *  与Python的静态单例比较:
    *                   一样是需要加上static方法才可以直接调用类里面的私有方法
    *
    *                   Python的类方法上 加上装饰器@staticmethod就可以不用实例化类而直接调用里面的方法
    *
    * */
    
    public class SingleTon {
    
        public static void main(String[] args) {
            // 3 创建出两个对象
            Bank bank1 = Bank.getInstance();
            Bank bank2 = Bank.getInstance();
            // 4 内存地址是否是一样的
            System.out.println(bank1 == bank2);
    
    
            // 3 创建出两个对象
            Bank2 bank3 = Bank2.getInstance_l();
            Bank2 bank4 = Bank2.getInstance_l();
            // 4 内存地址是否是一样的
            System.out.println(bank3 == bank4);
    
    
        }
    }
    
    // A设计模式
    class Bank{
        // 0 创建一个私有方法 只能在本类里面调用
        private Bank(){
    
        }
    
        // 1 创建一个类    Instance 实例化后的定义名
        private static Bank Instance = new Bank();
    
        // 2 上面两个private 方法不能调用   所以要创建一个公共方法来 返回对象
        public static Bank getInstance() {
                return Instance;
        }
    }
    
    B设计模式
    // 这个类似于Python的  也是判断是否实例化过对象
    class Bank2{
        // 0 创建一个私有方法 只能在本类里面调用
        private Bank2(){
    
        }
    
        // 1 创建一个类    定义为null  用于判断是否实例化过
        private static Bank2 Instance2 = null;
    
        // 2 如果实例化过就直接返回 没有创建过就实例化
        public static Bank2 getInstance_l() {
            if(Instance2 == null){
                Instance2 = new Bank2();
            }
            return Instance2;
        }
    }
    
    
    Python代码:
      @staticmathod   
    class Dome(object):      # 这里也是先定义私有方法为None      __message = None      # 如果实例化过就直接返回 没有创建过就实例化 def __new__(cls, *args, **kwargs):        if cls.__message == None:          cls.__message = object.__new__(cls) return cls.__message
    应用场景:
           1:网站的计数器,一般也是单例模式实现,否则难以同步。
         2:应用程序的日志应用,一般都使用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。
         3:项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置文件数据,都生成一个对象去读取。
         4:Application也是单例的典型应用
        5:Windows的Task Manager(任务管理器)就是很典型的单例模式
         6:Windows的Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站一直维护着仅有的一个实例。

  • 相关阅读:
    mkdir,rmdir
    linux目录结构
    echo
    date
    man
    cd
    ls
    线程、进程
    php类型的自动转换
    电商
  • 原文地址:https://www.cnblogs.com/wanghong1994/p/14141299.html
Copyright © 2011-2022 走看看