[HIT]哈工大2021软件构造知识点理解(1)——委托

        总有一些知识点,看起来似懂非懂,因此决定写几篇文章来对这些知识点总结归纳,顺便加强自己的理解,也欢迎各位积极指正其中理解不到位的地方。

        在可复用处个人认为最难理解的地方就是委托(Delegation),因此此处着重讨论一下Java中的四种委托——Dependency、Association、Aggregation和Composition。

        由弱到强分别是Dependency->Association,Association中Aggregation->Composition。

        假设有两个类A和B,A的Rep中含有B的对象,并且在之后A委托B,调用了B的方法,这样的委托称作Association,否则,若B的对象只作为A的某方法中的局部变量出现,我们管这样的委托叫做Dependency。

        比如对于下面这个再简单不过的类B:

public class B {
    private final int num;
    public B(int num){
        this.num = num;
    }
    public int getNum() {
        return num;
    }
}

        Dependency策略:

public class A {
    private final int num;
    public A(){
        B b = new B(10);
        num = b.getNum();
    }
}

        而关于Association策略,将其拆分成两部分,先来说较好理解的较强的Competition策略:

public class A {
    private final int num;
    private final B b = new B(10);
    public A(){
        num = b.getNum();
    }
}

        较弱的Aggregation策略:

public class A {
    private final int num;
    private final B b;
    public A(int num){//此处传参也可以是B b,看使用场景
        B b = new B(num);
        this.b = b;
        this.num = this.b.getNum();
    }
}

        是不是有些懵,不用担心,接下来来总结一下:

1)Dependency策略的委托就像是一个渣男/渣女委托你办事,用完你就把你给甩了,并且在以前或者以后甚至都看不出任何你存在过的痕迹。

2)Competition策略的委托截然不同,就像一个贞洁烈女,只要我委托你办事了,我就赖上你了,而且我的对象从此以后只能是你,不能是别人。

3)Aggregation比较中庸,我委托给你了,我的心中就给你了一个位置,或许在未来我的对象会变,但他也永远是你的那个类型。

        用这种方式来理解委托的概念,是不是就好理解多了。以上就是知识点理解第一篇的全部内容了。

上一篇:ATeam社区(牛客网项目第六章)


下一篇:Unity——射线系统