2019.7.30 Spring中的设计模式

一.前言
面试被问过好多次,我要记住…

二.说明
Spring中用到的九种设计模式

  • 工厂模式
  • 单列模式
  • 代理模式
  • 包装器模式
  • 适配器模式
  • 简单工厂模式
  • 观察者模式
  • 策略模式
  • 模板方法模式

三.解释

  1. 工厂模式
    定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类
//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.简单工厂模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值