欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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(); } }