一.前言
面试被问过好多次,我要记住…
二.说明
Spring中用到的九种设计模式
- 工厂模式
- 单列模式
- 代理模式
- 包装器模式
- 适配器模式
- 简单工厂模式
- 观察者模式
- 策略模式
- 模板方法模式
三.解释
- 工厂模式
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类
//1.创建接口
public interface Girl{
void hair();
void eye();
}
//2.创建接口的实体类
public class T implements Girl{
@Override
public void hair(){
System.out.println("黑长直!");
}
@Override
public void eye(){
System.out.println("水汪汪!");
}
}
public class C implements Girl{
@Override
public void hair(){
System.out.println("大波浪!");
}
@Override
public void eye(){
System.out.println("圆滚滚!");
}
}
//3.创建一个工厂,生成基于给定信息的实体类的对象。
public class GirlFactoryt{
public String getGirl(String girlName){
if(girlName==null){
return null;
}
if(girlName.equals("T")){
return new T();
}else if(girlName.equals("C")){
return new C();
}
return null;
}
}
//4.测试类
public class GirlFactorytDemo {
public static void main(String[] args) {
GirlFactory girlFactory= new GirlFactory();
Girl girl1=girlFactory.getGirl("T");
Girl girl2=girlFactory.getGirl("C");
}
}
2.单列模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责自己创建自己的对象,同时确保只有唯一对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
public class SingleObject {
//创建 SingleObject 的一个对象
private static SingleObject instance = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
public class SingletonPatternDemo {
public static void main(String[] args) {
//不合法的构造函数
//编译时错误:构造函数 SingleObject() 是不可见的
//SingleObject object = new SingleObject();
//获取唯一可用的对象
SingleObject object = SingleObject.getInstance();
//显示消息
object.showMessage();
}
}
单列模式具体还可分为:懒汉式,饿汉式,双检锁/双重校验锁(DCL,即 double-checked locking),登记式/静态内部类,枚举。
以后来补充…
3.包装器模式
4.代理模式
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。
在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
列如:1、买火车票不一定在火车站买,也可以去代售点。 2、spring aop
5.适配器模式,HandlerAdapter
6.简单工厂模式