设计模式:人们用程序解决现实中问题的一种思维方法。Java中的所有设计模式,都是基于面向对象思想,一共有23种设计模式。
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
我们学习:模板方法模式,单例设计模式,适配器模式,装饰模式。
模板方法设计模式
引用领域:如果你去实现一个功能,发现功能一部分清楚,一部分不清楚,不清楚的部分写成抽象方法,等待子类重写实现,就使用模板方法设计模式。
装饰设计模式
出现意义,增强原有对象的功能。
BufferedReader,BufferedWriter 装饰类,装饰流。
BufferedReader出现的目的,增强原有流对象Reader的功能。
装饰设计在Java的IO中,使用的最广泛。
继承重写和装饰区别:
装饰设计模式比继承重写的继承体系简单整洁,适合学,适合开发。
单例设计模式
保证一个类在内存中的对象唯一性。
思想:
1, 不让其他程序创建该类对象,私有化 本类构造函数。
2, 在本类中创建私有并静态的本类对象 。
3,对外提供公有并静态的方法,让其他程序获取这个对象。
//饿汉式
class Single{
private Single(){} //私有化构造函数。
private static Single s = new Single(); //创建私有并静态的本类对象。
public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
return s;
}
}
//懒汉式:延迟加载方式。
class Single {
// 构造函数私有化
private Single() {
}
// 先不创建对象
private static Single s = null;
// 定义一个方法可以获取到该对象
public static Single getInstance() {
// 方法被调用时才判断s是否为null,是否创建对象,起延时作用
if (s == null)
// 双重判断,加synchronized同步解决线程的安全问题
synchronized (Single.class) {
if (s == null)
// 创建一个本类对象
s = new Single();
}
return s;
}
}
适配器模式
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适用性
1.你想使用一个已经存在的类,而它的接口不符合你的需求。
2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
|
|