定义:对象A具有一个方法method(),建立一个代理对象B可以代理对象A实行method()方法
代码演示:
接口:
package com.lyc.myjavanine; public interface RentHouse { //带领租客看房 void LookHouse(); //定下租价 void AgreeMoney(int money); //签下合同 void SignPager(); }
实现类:
package com.lyc.myjavanine; import android.util.Log; public class FangDong implements RentHouse { @Override public void LookHouse() { Log.d("testlyc","带领租客看房"); } @Override public void AgreeMoney(int money) { Log.d("testlyc","定下租金:"+money); } @Override public void SignPager() { Log.d("testlyc","签合同"); } }
实现类:
package com.lyc.myjavanine; import android.util.Log; public class ZhongJie implements RentHouse{ FangDong fangDong; int tip=0; public ZhongJie(FangDong fangDong){ this.fangDong=fangDong; } @Override public void LookHouse() { if(tip>300){ fangDong.LookHouse(); }else { Log.d("testlyc","未给消费不能看房"); } } @Override public void AgreeMoney(int money) { fangDong.AgreeMoney(money); } @Override public void SignPager() { fangDong.SignPager(); } public void give(int tip){ this.tip=tip; } }
调用:
package com.lyc.myjavanine; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; /** * 静态代理 */ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ZhongJie zhongJie=new ZhongJie(new FangDong()); zhongJie.give(400); zhongJie.LookHouse(); zhongJie.AgreeMoney(3000); zhongJie.SignPager(); } }
运行结果: