• Java基础——设计模式


    设计模式:是在大量实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式
    共23种设计模式

    单例设计模式:
      1.解决的问题:使得一个类只能够创建一个对象
      2.实现:
      1)饿汉式:

    class Singleton{
        //1.私有化构造器,使得在类的外部不能调用此构造器
        private Singleton(){
    
        }
        //2.在类的内部创建一个实例
        private static Singleton instance = new Singleton();
    
        //3.私有化此对象,通过共有的方法调用
        //4.此公有方法,只能通过类  来调用,因此必须声明为static的,故同时类的实例也必须声明为static的
        public static Singleton getInstance() {
        return instance;
        }
    }
    

      

        2)懒汉式:(可能存在线程安全问题

    class Singleton{
        //1.
        private Singleton(){
    
        }
        //2.
        private static Singleton instance = null;
        //3.
        public static Singleton getInstance() {
        if(instance == null){
        instance = new Singleton();
        }
        return instance;
        }
    }
    

      

    懒汉式(解决了线程安全问题

    package test;
    
    public class TestSingleton {
    	
    }
    
    class Singleton{
    	private Singleton() {
    		
    	}
    	
    	private static Singleton instance = null;
    	
    	public static Singleton getInstance() {
    		if(instance == null) { //告知后面的线程,已经有线程创建了对象,直接不用等待,继续执行return(减少了等待时间,提高了后面线程的效率)
    			synchronized(Singleton.class){//当有线程进来之后,后面的线程就进不来了,在外面等待
    				if(instance == null) {
    					instance = new Singleton();
    				}
    			}
    		}
    		return instance;
    	}
    }
    

      

    模板方法设计模式:
      1.解决的问题:功能内部一部分是确定的,一部分是不确定的。这时,可以把不确定的部分暴露出去,让子类去实现。
      编写一个父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类去实现,就是一种模板模式。

  • 相关阅读:
    发布Web端
    回溯算法套路详解(转)
    埋点自动化测试框架设计
    Mitmproxy + Python 做拦截代理
    面向对象三大特性-多态的思考
    java集合类-Set接口
    java集合类-List接口
    java集合类-集合框架体系
    测试的Python、 Java语言之争
    Python迭代器、生成器
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/7801284.html
Copyright © 2020-2023  润新知