spring学习笔记(七)

今天学习了为什么要使用代理类,和静态代理类.

结构

 

 

package zhc.love.dj;

public interface UserManger {
	
	public void addUser(String name,String password);
	public void delUser(int id) ;
	public void modUser(int id,String name,String password);
}

  

   

package zhc.love.dj;

public class UserMangerImp implements UserManger {

	public void addUser(String name, String password) {
		System.out.println("==============UserMangerImp.addUser()==============================");
	}

	public void delUser(int id) {
		System.out.println("==============UserMangerImp.delUser()==============================");
	}

	public void modUser(int id, String name, String password) {
		System.out.println("==============UserMangerImp.modUser()==============================");
	}
	/* 1 .普通做法:在业务类代码里加入了与业务无关的方法,比如安全性检查,日志记录,使得类的职责模糊,应该是
	 * 一个类该添加用户就添加用户,删除就删除,而这个例子把安全性,日志都加入,似的职责混乱.
	 *  每个方法的实现都加入了该方法checkSecurity()
	 *  这样使得大量代码冗余,在各个业务层混杂了很多类似的代码,不利于类的管理,
	public void addUser(String name, String password) {
		this.checkSecurity();
		System.out.println("==============UserMangerImp.addUser()==============================");
	}

	public void delUser(int id) {
		this.checkSecurity();
		System.out.println("==============UserMangerImp.delUser()==============================");
	}

	public void modUser(int id, String name, String password) {
		this.checkSecurity();
		System.out.println("==============UserMangerImp.modUser()==============================");
	}
	public void checkSecurity(){
		System.out.println("=========checkSecurity()=========");
	}
     */
}

 

  

  

package zhc.love.dj;

public class UserMangerImpProxy implements UserManger {
    
	/**
	 * 增加静态代理类,使得在UserMangerImp类的实现中不夹杂很多跟类无关的代码,不过还是没有解决大量代码
	 * 重复添加的问题,静态代理只适合代理类少的类
	 */
	UserManger userManger ;
	public UserMangerImpProxy(){
		userManger = new UserMangerImp();
	}
	public void addUser(String name, String password) {
		checkSecurity();
		userManger.addUser(name, password);
	}

	public void delUser(int id) {
		checkSecurity();
		userManger.delUser(id);
	}

	public void modUser(int id, String name, String password) {
		checkSecurity();
		userManger.modUser(id, name, password);
	}
	
	public void checkSecurity(){
		System.out.println("=========checkSecurity()=========");
	}

}

 

 

package zhc.love.dj;

public class Test {
	public static void main(String[] args){
		
		/* 1.普通情况来做,只要类调用就会调用方法
		UserManger userManger = new UserMangerImp();
		userManger.addUser("zhang", "china");
       */
		
		//静态代理类实现
		UserManger userManger = new UserMangerImpProxy();
		userManger.addUser("aaa", "bbb");
	}
}

 

 

 

你可能感兴趣的:(spring)