类关联和自身关联的设计模式(阿里云开发者社区学习笔记)

类关联设计

比如一个人,他除了自己人的属性,他还可以有宠物猫,猫也有自己的属性,那么他们就是两个有关联的对象。
将猫当作人的一个属性来设计:

//Dog类
public class Dog {
    private String Name;
    private Integer age;

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
    public Dog(){

    }
    public Dog(String name,Integer age){
        this.age=age;
        this.Name=name;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "Name='" + Name + '\'' +
                ", age=" + age +
                '}';
    }
}
//Person类
import java.time.Period;
import java.util.Arrays;

public class Person {
    private Integer age;
    private String name;

    private Dog[] dog;

    public Person(){

    }
    public Person(String name,Integer age){
        this.age=age;
        this.name=name;
    }
    public void speak(){
        System.out.println("人能说话");
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Dog[] getDog() {
        return dog;
    }

    public void setDog(Dog[] dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", dog=" + Arrays.toString(dog) +
                '}';
    }
}

//测试代码
        Person person = new Person("张三",18);
        Dog dog1 = new Dog("小狗1号",2);
        Dog dog2 = new Dog("小狗2号",3);
        person.setDog(new Dog[]{dog1,dog2});
        System.out.println(person);
        System.out.println(dog1);
        System.out.println(dog2);

就是先创建子类对象和父类对象除了子类之外的元素,然后利用父类的set方法结合匿名对象方法将子类对象的地址传递过去。

自身关联

刚才的例子除了人可以有猫之外,还可能会有孩子,也是Person对象。这就是自身关联,和类关联一样的操作。Person类中定义private Person[] person;并设置setter,getter。
然后测试为:

 Person person1 = new Person("张大三",9);
        Person person2 = new Person("张小三",2);
        person.setPeoples(new Person[]{person1,person2});
        System.out.println(person);

参考文献

阿里云开发者社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值