spring学习笔记(七)

xiaoxiao2024-05-06  25

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

 

 

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"); } }

 

 

 

转载请注明原文地址: https://www.6miu.com/read-5015187.html

最新回复(0)