1. Definition:
Provides a proxy for other objects to control access to this object.
1. Function:
In some cases, an object does not fit or cannot directly reference another object, and a proxy object can act as an intermediary between the client and the target object.
3. Function:
A proxy object can act as an intermediary between the client and the target object, which plays a role and protects the target object.
4. Division:
Agents are also divided into remote agents, virtual agents, protection agents and smart pointers;
A simple demo is written below;
Where the bank is a simple object, but does not want to modify it accordingly,
Then, use Bankproxy Agent to access the Bank object, to hold the bank's use, and to protect the role, etc.;
The first is the interface of the bank;
Package com.example.demo.proxy;/** * Bank interface * @author Qubian * @data June 3, 2015 * @email [EMAIL protected] * */public Interfa Ce bankinterface {public string setbankname (string name);p ublic void Addcount ();}
Next is the object that has been written and needs to be protected;
Package com.example.demo.proxy;/** * Bank Implementation * @author Qubian * @data June 3, 2015 * @email [EMAIL protected] * */public class Bank implements bankinterface{/** * needs to be related to the name of the banks */@Overridepublic string Setbankname (string name) {return name+ "bank _001 ";} @Overridepublic void Addcount () {//Specific operation}}
Proxy classes, specific operations:
Package com.example.demo.proxy;/** * Proxy class, I do not want to directly access the Bank class, that is, do not want to modify the bank class * So I can use proxy * @author Qubian * @data June 3, 2015 * @email [email Protected] * */public class Bankproxy implements Bankinterface{private bank mbank;public void Setmbank (Bank MBank) {This.mbank = MBank;} @Overridepublic string Setbankname (string name) {if (mbank==null) {mbank = new Bank ();} In the agent's internal is actually used by the proxy class//Only can add the agent can also add their own operation string SetName =mbank.setbankname (name);//other Operations return setName;} @Overridepublic void Addcount () {if (mbank==null) {mbank = new Bank ();} Mbank.addcount ();//Other Operations}}
Use:
Package Com.example.demo.proxy;public class Userproxy {public void Usebank () {Bankinterface Bank =new bankproxy (); Bank.setbankname ("China Merchants Bank"); Bank.addcount ();}}
So, there are a lot of places in Android that use proxies:
1. The aidl used in the process communication between Android, the system uses AIDL to define a remote service, is a remote proxy mode; link
2, the source code in the Activitymanagerproxy class is an agent, it is the agent of activitymanagernative, their common interface Iactivitymanager,activitymanager is the use of it;
Android design mode-proxy mode