java设计模式--代理模式
程序员文章站
2024-03-31 09:02:34
代理模式:为其他对象提供一种代理来控制对这个对象的访问。我们来看这样一个简单的例子,现在超市商家不直接把商品交给客户,而是通过一些平台的外卖小哥把商品送到客户手中,此时外卖小哥就起到了代理的作用。代码如下: ......
代理模式:为其他对象提供一种代理来控制对这个对象的访问。我们来看这样一个简单的例子,现在超市商家不直接把商品交给客户,而是通过一些平台的外卖小哥把商品送到客户手中,此时外卖小哥就起到了代理的作用。代码如下:
//客户类
public class customer { public string name; public string getname() { return name; } public void setname(string name) { this.name = name; } } //出售商品的代理接口,这样就可以在所有实现这个接口的超市类中都可以使用外卖小哥类(proxy代理) public interface salegoods { void salewater(); void salefood(); void salefruits(); }
//超市实现代理接口(定义外卖小哥所代表的真实的实体) public class supermarket implements salegoods { customer customer = null; public supermarket(customer customer){ this.customer = customer; } @override public void salewater() { system.out.println(customer.getname() +"购买的水"); } @override public void salefood() { system.out.println(customer.getname() +"购买的食物"); } @override public void salefruits() { system.out.println(customer.getname() +"购买的水果"); } }
//外卖小哥实现代理接口 public class takeoutbrother implements salegoods { supermarket supermarket = null; public takeoutbrother(customer customer){
//通过超市的引用调用超市的方法 this.supermarket = new supermarket(customer); } @override public void salewater() {
//调用超市的方法 supermarket.salewater(); } @override public void salefood() { supermarket.salefood(); } @override public void salefruits() { supermarket.salefruits(); } } public class test { public static void main(string[] args) { customer customer = new customer(); customer.setname("zhangsan"); takeoutbrother takeoutbrother = new takeoutbrother(customer); takeoutbrother.salefood(); takeoutbrother.salefruits(); takeoutbrother.salewater(); } }