java基础学习复习之路(十二)---设计模式

代理模式

  • 静态代理
  • 动态代理:自动生成代理对象
    动态代理需要学习java反射

例子:下面是一个静态代理的例子
(备注:学过框架的人看起来是不是很眼熟,是不是很像spring框架的AOP实现)

package com.zzs.model;

/***
 * 动态代理例子
 * @author zzs
 * @deprecated 医生看病
 */
public class proxy {
	
   public static void main(String args[]){
	   Doctor doctor = new DoctorImpl();
	   DoctorProxy doctorProxy = new DoctorProxy(doctor);
	   doctorProxy.treat();
   }
   

}

interface  Doctor{
	void treat();
}

//被代理类
class DoctorImpl implements Doctor{
	
	@Override
	public void treat(){
		System.out.println("看病");
	}
	
}

//代理类
class DoctorProxy implements Doctor{

	Doctor doctor;
	public DoctorProxy(Doctor doctor) {
		this.doctor = doctor;
	}
	@Override
	public void treat() {
		this.check();
		this.doctor.treat();
		this.medicine();
	}
	
	public void check(){
		System.out.println("看病之前先检查");
	}
	
	public void medicine(){
		System.out.println("看病之后要抓药");
	}
}

工厂模式

工厂模式:实现调用者与创建者的分离,降低耦合,提高灵活性
即:自动生成对象

下面是一个简单工厂模式

package com.zzs.model;

/***
 * 工厂模式
 * @author zzs
 *
 */
public class Factory {
	  public static void main(String args[]){
		  Animal cat = AnimalFactory.getCat();
		  //不用new 对象
		  cat.eat();
	  }

}
interface Animal{
	void eat();
}

class Cat implements Animal{

	@Override
	public void eat() {
		System.out.println("猫吃老鼠");
		
	}
	
}
class AnimalFactory{
	public static Animal getCat(){
		return new Cat();
	}
}

看到工厂模式,是不是想到的spring工厂,
spring就是一个强大的工厂,它通过配置文件和反射机制,完美的注入了对象。

猜你喜欢

转载自blog.csdn.net/weixin_43157543/article/details/106305149
今日推荐