内容
1.设计模式介绍
2.单例模式
3.模板设计模式
一.设计模式概念
1.什么是设计模式?
对经常出现的软件设计问题的成熟解决方案
2.设计模式举例
比如单例模式
工厂模式
代理模式
观察者模式
适配器模式
建造者模式
二.单例模式
详细请看:https://www.jianshu.com/p/6171628603fb
1.简介
单例设计模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
2.作用
对于那些比较耗内存的类,只实例化一次可以大大提高性能,节省内存的开销。
3.实现步骤
①私有化所有的构造方法(目的:使外部不可以直接创建)
②给外部提供一个静态方法,来获取当前类的一个对象。(注意:这个方法必须是静态的)
③必须定义一个静态成员变量来保存当前类唯一的一个对象(注意:这个变量必须是静态的)
④创建对象(有两种方法)
饿汉式:在定义静态成员变量时,直接就创建当前类的一个对象并赋值(类一加载,就有这个对象了)
懒汉式:默认不创建,当调用方法的时候才会创建。先在静态方法里面判断有没有值,如果没有值,就创建,然后返回。
就类似于
if(a == null){
//创建一个对象
a = new A();
}
return a;
4.深入单例模式(线程中)
左右两个框是线程
这样可以避免两个线程都创建了一个实例,使单例模式在多线程中真正得到实现
三.模板设计模式
https://www.jianshu.com/p/3d0c0a302696
1.简介
从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板。从而避免了子类设计的随意性。子类在抽象类的基础上进行拓展、改造
2.注意点:
①抽象类不能被实例化。
抽象方法必须使用abstrac修饰,但是抽象方法能被声明,不能被实现,只能被重写/覆盖。
②抽象类中不一定会有抽象方法,但是抽象方法必须要出现在抽象类中
③一个非抽象的类继承抽象类,必须将抽象类中的抽象方法覆盖/实现/重写。
做法是可以将方法复制粘贴到子类中然后把abstract去掉
④子类继承抽象类就是子类实现抽象类里面的抽象方法。一般在抽象类里面把方法的执行顺序都弄好了,顺序在构造方法里面。
3.抽象类与普通类的区别
①抽象类不能实例化,但是普通类可以。
②抽象类里面可以有抽象方法(抽象方法只声明,不实现)。但是普通类里面不可以。