(原创)认识设计模式-代理

2015/03/15 设计模式

介绍

img

代理的定义为:为其他对象提供一种代理以控制这个对象的访问。

听说过某某某代理公司吧,这个代理和这里的代理模式是一个意思,这样就很容易理解了。

使用方式

	public interface Project {
	
	    public void doSomething();
	
	}
	
	public class ProjectImpl implements Project{
	    @Override
	    public void doSomething() {
	
	        System.out.println("ProjectImpl doSomething");
	    }
	}
	
	public class ProjectProxy implements Project{
	
	    private Project mProject;
	
	    public ProjectProxy(Project project)
	    {
	        mProject = project;
	    }
	
	    @Override
	    public void doSomething() {
	
	        mProject.doSomething();
	
	    }
	
	}
	
	public class Main {
	
	    public static void main(String[] args) throws Exception {
	
	        Project project = new ProjectProxy(new ProjectImpl());
	        project.doSomething();
	
	    }
	}

结果如下:

ProjectImpl doSomething

总结

有人说为嘛还搞个代理?直接调用ProjectImpl控制不就行了吗?简单场景确实直接点更有效率,但考虑到以后工程庞大,需求扩展,代码的改动也会非常多,使用这个模式就可以让逻辑部分和实现剥离,通过一个代理来连接,这样即使以后需要更换ProjectImpl也非常简单,直接修改代理就ok了,对原始逻辑不会有任何影响。

另外,还有一种动态代理,其实模式都是一样,只不过比上面的更灵活通用,但也必须结合不同的语言来实现。

在使用场景中:

	public class Main {
	
	    public static void main(String[] args) throws Exception {
	
	        Project project = new ProjectProxy(new ProjectImpl());//产生直接联系
	        project.doSomething();
	
	    }
	}

如上会产生直接联系,动态代理就是解除这种直接关系,在JAVA语言中利用反射来实现,单纯写入需要的代理名字就可以获取到想要的对象,从而实现解耦通用化。


知识共享许可协议
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

站内搜索

    撩我备注-博客

    joinee

    目录结构