java代理设计模式

代理设计模式原理:
两个子类公共实现一个接口,一个子类负责主要业务实现,另外一个子类完成辅助主要业务的完成,还会有一些自己的业务。

代码:还是买电脑的例子
接口

package com.csdn.tail3;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tail
 * Date: 2019-08-05
 * Time: 13:39
 */
 
interface Isubject {
    void buycomputer();
}

负责主要业务实现的子类

package com.csdn.tail3;

public class RealSubject implements Isubject{
    @Override
    public void buycomputer() {
        System.out.println("want to buy hupu Computer");
    }
}

辅助实现主要业务,还有自己业务的子类

package com.csdn.tail3;

public class ProxySubject implements Isubject {

    private Isubject isubject;

    public ProxySubject(Isubject isubject) {
        //这是为了表示传进来的参数是这个类的一个属性的赋值(语言可能存在误差,但是大概就这个意思)
        this.isubject=isubject;
    }

    public void beforeSale(){
        System.out.println("hupu computer was produced");
    }

    public void afterSale(){
        System.out.println("computer after slaes");
    }

    @Override
    public void buycomputer() {
        this.beforeSale();
        this.isubject.buycomputer();
        this.afterSale();
    }
}

//设置里一个工厂类
class Factory {
    //static是和对象解绑,直接可以用类去调用
    public static Isubject getInstance(){
        return new ProxySubject(new RealSubject());
    }
}

测试

package com.csdn.tail3;

public class TestBuycomputer {
    public static void main(String[] args) {
//        Isubject isubject = new ProxySubject(new RealSubject());
//        isubject.buycomputer();
        Isubject isubject = Factory.getInstance();
        isubject.buycomputer();
    }
}

知识点总结(总结了一些我自己还不熟悉,或者出现问题的知识点)

  1. this.isubject=isubject;
    这一句的作用是在于,传进来的参数我们没有明确指明,“isubject” 是什么,这个构造方法可以让属性和传进来的对象进行绑定,可以直接调用,就如后面的代码this.isubject.buycomputer();
    对象调用了它的方法,this.isubject是这个类调用它的属性。

  2. static
    static在本文中其实就是让这个方法和对象解绑,只属于这个类。
    一般调用一个类的对象需要先new一个对象,在让这个对象调用方法,而用了static 就直接可以让类直接调用方法。例 Isubject isubject = Factory.getInstance();

总结:这是一个简单的代理设计模式,都只是打印了一些文字而已,没有真正的去应用项目,比较适合初学者的接触了解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值