设计模式
     设计模式是在大量实践中总结和理论化之后优选的代码结构,编程风格和思考问题的方式
     像是经典的棋谱,不同棋局用不同棋谱,免去自己的再思考与摸索
     
     单例设计模式  
         静态方法与静态属性的经典使用
         单例:单个的实例
         单例模式:采取一定方法保证在整个软件系统中,对于某个类,只能存在一个对象/实例;并且该类只提供一个取得其对象实例的方法
         应用:有的类很占用资源,而且只要存在一个实例就够用了
             JavaSE的java.lang.Runtime就是单例模式  饿汉式
         2种方式:
             饿汉式            着急,只要类被加载,这个唯一对象就会被创建
                 1 构造器私有化            防止直接new
                 2 类内部创建对象        (注意不是在下面的方法中创建而是直接在类中创建)   
                                         修饰符一般是private static 这里的static是为了下面的方法可以用
                 3 向外暴露一个静态的公共方法  是public static的,一般命名是getInstance,    
                                         可以调用多次getinstance,但是返回的是一个对象
                 优势;没有线程安全问题 对于getInstance方法
                 问题:不用这个对象,只是使用其中静态成分,也会创建,造成资源浪费(因为这个对象一般是重量级的)
                 
             懒汉式            不着急,使用到这个对象,才创建
                 1 构造器私有化
                 2 定义一个私有静态属性的对象=null(赋值时,另一个类会被加载,可以用static代码块验证)
                 3 提供一个公共的静态方法,可以返回对象   在其中判断属性是不是null, 是null,创建(调用构造器)返回对象,
                                                                                     不是null,直接返回对象
                 优势:不会有资源浪费
                 问题:有线程安全问题     对于getInstance方法
                 懒惰初始化的单例模式可以解决安全问题  --》jvm/类加载
                 双重检查锁实现单例模式可以解决安全问题--》jvm/JMM(方法本身没有问题,jvm有问题)
 模板设计模式
     抽象类最佳实现
     需求:多个类,每个类做不同任务job,统计每个类完成任务的时间
     解决:(这里还利用了动态绑定)
         模板类(抽象方法job,普通方法jisuan调用job计算)(抽象类:防止创建父类对象)
         每个类重写job方法就行,就不用管计算的方法了