正文
内容
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.抽象类与普通类的区别
①抽象类
不能实例化
,但是普通类可以。
②抽象类里面可以有抽象方法(抽象方法只声明,不实现)。但是普通类里面不可以。