AOP:静态代理实现方式①通过继承②通过接口

文件结构:

添加日志:

package com.wangcf.manager;

public class LogManager {
    
    public void add(){
        System.out.println("添加日志...");
    }
}

权限检查:

package com.wangcf.manager;

public class AuthorityManager {
    public boolean isAllown(){
        boolean flag=true;
        System.out.println("权限检查..");
        return true;
    }
}

 

①:通过继承方式

基类:

package com.wangcf.manager.proxy;

import com.wangcf.entity.User;
import com.wangcf.manager.imp.IUserManager;

public class UserManager implements IUserManager{
    
    public void add(User user){
        System.out.println("UserManager add...");
    }
    
    public void del(User user){
        System.out.println("UserManager del...");
    }
    
    public void update(User user){
        System.out.println("UserManager update...");
    }
}

Proxy1继承基类

package com.wangcf.manager.proxy;

import com.wangcf.entity.User;
import com.wangcf.manager.LogManager;

public class UserManagerProxy1 extends UserManager{
    
    private LogManager logManager;
    
    public UserManagerProxy1() {
        // TODO Auto-generated constructor stub
        this.logManager=new LogManager();
    }
    @Override
    public void add(User user) {
        // TODO Auto-generated method stub
        this.logManager.add();
        super.add(user);
    }
}

Proxy2继承Proxy1

package com.wangcf.manager.proxy;

import com.wangcf.entity.User;
import com.wangcf.manager.AuthorityManager;

public class UserManagerProxy2 extends UserManagerProxy1{
    
    private AuthorityManager autManager;
    
    public UserManagerProxy2() {
        // TODO Auto-generated constructor stub
        this.autManager=new AuthorityManager();
    }
    @Override
    public void add(User user) {
        // TODO Auto-generated method stub
        this.autManager.isAllown();
        super.add(user);
    }
}

Proxy3这是继承的另一种方式:

package com.wangcf.manager.proxy;

import com.wangcf.entity.User;
import com.wangcf.manager.AuthorityManager;
import com.wangcf.manager.LogManager;

public class UserManagerProxy3 extends UserManager{
    
    private LogManager logManager;
    private AuthorityManager autManager;
    
    public UserManagerProxy3() {
        // TODO Auto-generated constructor stub
        this.autManager=new AuthorityManager();
        this.logManager=new LogManager();
    }
    @Override
    public void add(User user) {
        // TODO Auto-generated method stub
        this.autManager.isAllown();
        this.logManager.add();
        super.add(user);
    }
}

测试类:

package com.wangcf.test;

import com.wangcf.manager.proxy.UserManager;
import com.wangcf.manager.proxy.UserManagerProxy1;
import com.wangcf.manager.proxy.UserManagerProxy2;
import com.wangcf.manager.proxy.UserManagerProxy3;
/**
 * 继承方式静态代理
 * @author fan
 *
 */
public class TestAction1 {
    public static void main(String[] args) {
        //只是实例不一样,这个是用代理继承方式实例化的
        UserManager userManager1=new UserManagerProxy1();
        userManager1.add(null);
        System.out.println("===========================");
        UserManager userManager2=new UserManagerProxy2();
        userManager2.add(null);
        System.out.println("===========================");
        UserManager userManager3=new UserManagerProxy3();
        userManager3.add(null);
    }
}

结果:

②通过接口

 接口:

package com.wangcf.manager.imp;

import com.wangcf.entity.User;

public interface IUserManager {
    
    public void add(User user);
    
    public void del(User user);
    
    public void update(User user);
}

 实现接口

Proxy1

package com.wangcf.manager.imp;

import com.wangcf.entity.User;
import com.wangcf.manager.LogManager;

public class UserManagerProxy1 implements IUserManager{

    private IUserManager userManager;
    private LogManager logManager;
    
    public UserManagerProxy1(IUserManager userManager) {
        // TODO Auto-generated constructor stub
        this.userManager=userManager;
        this.logManager=new LogManager();
    }
    
    
    @Override
    public void add(User user) {
        // TODO Auto-generated method stub
        this.logManager.add();
        userManager.add(user);
    }

    @Override
    public void del(User user) {
        // TODO Auto-generated method stub
        this.logManager.add();
        userManager.del(user);
    }

    @Override
    public void update(User user) {
        // TODO Auto-generated method stub
        this.logManager.add();
        userManager.update(user);
    }
    
}

Proxy2

package com.wangcf.manager.imp;

import com.wangcf.entity.User;
import com.wangcf.manager.AuthorityManager;

public class UserManagerProxy2 implements IUserManager{

    private IUserManager userManager;
    private AuthorityManager authorityManager;
    public UserManagerProxy2(IUserManager userManager) {
        // TODO Auto-generated constructor stub
        this.userManager=userManager;
        this.authorityManager=new AuthorityManager();
    }
    
    @Override
    public void add(User user) {
        // TODO Auto-generated method stub
        this.authorityManager.isAllown();
        userManager.add(user);
    }

    @Override
    public void del(User user) {
        // TODO Auto-generated method stub
        this.authorityManager.isAllown();
        userManager.del(user);
    }

    @Override
    public void update(User user) {
        // TODO Auto-generated method stub
        this.authorityManager.isAllown();
        userManager.update(user);
    }
    
}

测试类:

package com.wangcf.test;

import com.wangcf.manager.imp.IUserManager;
import com.wangcf.manager.imp.UserManagerProxy1;
import com.wangcf.manager.imp.UserManagerProxy2;
import com.wangcf.manager.proxy.UserManager;
/**
 * 实现接口的方式静态代理
 * @author fan
 *
 */
public class TestAction2 {
    public static void main(String[] args) {
        UserManager userManager = new UserManager();
        IUserManager iUserManager=new UserManagerProxy1(userManager);
        iUserManager.add(null);
        System.out.println("1=============");
        //和上面的一样
        IUserManager userManager2=new UserManagerProxy1(new UserManager());
        userManager2.add(null);
        System.out.println("2===========");
        IUserManager userManager3=new UserManagerProxy2(userManager2);
        userManager3.add(null);
    }
}

打印:

 

posted @ 2017-01-16 15:43  言凡  阅读(800)  评论(0编辑  收藏  举报