引用传递应用案例(合成设计模式引入)----拓展1

目录

知识总览:

  1. 类关联结构
  2. 自身关联结构
  3. 合成设计模式(GOF链接预放置)

引用传递是整个java项目中最为核心的内容,同时也是在实际开发中最常见的一种操作。

1.类关联结构

代码展示:
描述人类与汽车类的关系:
声明汽车类

public class Car {
    private String name;
    private double price;
    private Person person;      //车属于的人(车与人产生关系)

    public Car(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

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

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }
    public String getInfo(){
        return "汽车品牌型号"+name+"、汽车价值"+price;
    }
}

声明人类:

public class Person {
    private String name;
    private int age;
    private Car car;        //人拥有的车,如果没有车则为null

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }
    public String getInfo(){
        return "姓名"+name+"、年龄"+age;
    }
}

测试类:

public class JavaDemo {
    public static void main(String[] args) {
        //实例化对象
        Person person=new Person("张三",29);
        Car car = new Car("兰博基尼",5000000.00);
        //设置对象的关系
        person.setCar(car);
        car.setPerson(person);
        //根据关系来获取数据,以此将两个类联系起来
        System.out.println(person.getCar().getInfo());//通过人获取该人拥有汽车的信息
        System.out.println(car.getPerson().getInfo());//通过该汽车获取车主信息
    }
}

自身关联结构

该类不仅可以与上述其他类关联还能与该类自身相关联
以人类为例:
代码:
声明汽车类

public class Car {
    private String name;
    private double price;
    private Person person;      //车属于的人(车与人产生关系)

    public Car(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

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

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }
    public String getInfo(){
        return "汽车品牌型号"+name+"、汽车价值"+price;
    }
}

声明人类:


public class Person {
    private String name;
    private int age;
    private Car car;        //人拥有的车,如果没有车则为null
    private Person childer[];//与自身类产生相同性质的自身引用关联类数组

    //Person类与自身类型相关联的setter和getter方法
    public Person[] getChilder() {
        return childer;
    }

    public void setChilder(Person[] childer) {
        this.childer = childer;
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public Car getCar() {
        return car;
    }

    public void setCar(Car car) {
        this.car = car;
    }
    public String getInfo(){
        return "姓名"+name+"、年龄"+age;
    }
}

测试类:

public class JavaDemo {
    public static void main(String[] args) {
        //实例化对象
        Person person=new Person("张三",29);
        Car car = new Car("兰博基尼",5000000.00);
        //设置对象的关系
        person.setCar(car);
        car.setPerson(person);
        //根据关系来获取数据,以此将两个类联系起来
        System.out.println(person.getCar().getInfo());//通过人获取该人拥有汽车的信息
        System.out.println(car.getPerson().getInfo());//通过该汽车获取车主信息
        //下面是产生与自身相关联的代码:
        Person childer01=new Person("张三的儿子",22);
        Person childer02=new Person("张三的女儿",18);
        person.setChilder(new Person[]{childer01,childer02});
        childer01.setCar( new Car("法拉利",4000000));
        childer02.setCar(new Car("奥迪",4000000));
        //根据关系获取数据
        for(int i=0;i<person.getChilder().length;i++){
            System.out.println(person.getChilder()[i].getInfo());
            System.out.println(person.getChilder()[i].getCar().getInfo());
        }
    }
}

输出结果:
在这里插入图片描述
总结:
对象数组的作用:
在本程序中使用对象数组描述了一个人的后代信息,实际上可以发现,对象数组在整体设计中描述的是一种“多”的概念,如果没有此结构则很难描述出多个子女这一特点。
个人觉得哈,对象数组的位置不一定就写在自身类中

合成设计模式

前面的引用传递应用案例就是合成设计模式的前身
此设计模式的核心思想为:通过不同的类实现子结构定义,随后将其在一个父结构中整合。(该思想在后面的学习中应用广泛)
例如,现在要描述一台计算机组成的类结构,那么在这样的状态下就必须进行拆分,计算机分为两个部分:显示器和主机,而主机上需要设置有一系列的硬件,则可以采用以下的伪代码实现:

范例:伪代码描述合成设计思想:

class 计算机{							//【父结构】描述计算机组成
	private 显示器 对象数组[];			//一台计算机可以连接多个显示器
	private 主机 对象;					//一台计算机只允许有一台主机
}
class 显示器{}							//【子结构】
class 主机{								//【子结构】
	private 主板 对象;
	private 鼠标 对象;
	private 键盘 对象;
}
calss 主板{								//【子结构】
	private 内存 对象数组[];
	private CPU 对象数组[];
	private 显卡 对象;
	private 硬盘 对象数组[];
}
class 键盘{}								//【子结构】
class 鼠标{}								//【子结构】
class 内存{}								//【子结构】
class CPU{}								//【子结构】
class 显卡{}								//【子结构】
class 硬盘{}								//【子结构】
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CharmDeer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值