类关联结构
引用传递是真个Java开发与设计过程之中最为重要的技术组成,对于应用传递也与生活密切相关。
引用分析一:
假设说现在生活比较好,于是有的人可以有一辆汽车,当然,有些人(屌丝)是没有汽车,只有11路汽车可以使用,现在要求可以通过面向对象的设计来解决实心以上的这种关系转换。
package com.example.quartz.demo;
class Car{
private String name;
private double price;
private Person person;//一辆车属于一个人
public Car(String name,double price){
this.name = name;
this.price = price;
}
public void setPerson(Person person){
this.person = person;
}
public Person getPerson(){
return this.person;
}
public String getInfo(){
return "汽车品牌型号:"+this.name+"、汽车价值:"+price;
}
}
class Person{
private String name;
private int age;
private Car car;//一个人有一辆车
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void setCar(Car car){
this.car = car;
}
public Car getCar(){
return this.car;
}
public String getInfo(){
return "姓名:"+this.name + "、年龄:"+this.age;
}
}
public class JavaDemo{
public static void main(String[] args){
//第一步 :声明对象并且设置彼此的关系
Person person = new Person("zs",18);
Car car = new Car("bmw",800000.00);
person.setCar(car);//一个人有一辆车
car.setPerson(person);//车属于一个人
// 第二步:根据关系获取数据
System.out.println(person.getCar().getInfo()); //代码链
//等价于Car c = person.getCar(); c.getInfo();
System.out.println(car.getPerson().getInfo());
}
}
本次所操作的两个类型:Person、Car都是自定义类型,但是Person和Car都可以明确的描述出某一类群体,针对于群体关系的做出的一种设置。
自身关联
现在已经确定好了人与车的关系,但是现在也可以进一步进行该操作的完善,例如:一个人会有孩子,孩子成年之后也可以有车。
package com.example.quartz.demo;
class Car {
private String name;
private double price;
private Person person;//一辆车属于一个人
public Car(String name, double price) {
this.name = name;
this.price = price;
}
public void setPerson(Person person) {
this.person = person;
}
public Person getPerson() {
return this.person;
}
public String getInfo() {
return "汽车品牌型号:" + this.name + "、汽车价值:" + price;
}
}
class Person {
private String name;
private int age;
private Car car;//一个人有一辆车
private Person[] children;//一个人有多个孩子
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setChildren(Person[] children) {
this.children = children;
}
public Person[] getChildren() {
return this.children;
}
public void setCar(Car car) {
this.car = car;
}
public Car getCar() {
return this.car;
}
public String getInfo() {
return "姓名:" + this.name + "、年龄:" + this.age;
}
}
public class JavaDemo {
public static void main(String[] args) {
//第一步 :声明对象并且设置彼此的关系
Person person = new Person("z3", 40);
Person childA = new Person("l4", 20);
Person childB = new Person("w5", 21);
childA.setCar(new Car("BMW x1", 300000.00));
childB.setCar(new Car("大众", 1500000.00));//匿名对象
person.setChildren(new Person[]{childA, childB});//一个人有多个哈子
Car car = new Car("bmw", 800000.00);
person.setCar(car);//一个人有一辆车
car.setPerson(person);//车属于一个人
// 第二部:根据关系获取数据
System.out.println(person.getCar().getInfo()); //代码连
//等价于Car c = person.getCar(); c.getInfo();
System.out.println(car.getPerson().getInfo());
//根据人找到所有的孩子以及孩子对应的汽车
for (int i = 0; i < person.getChildren().length; i++) {
System.out.println("\t |-" + person.getChildren()[i].getInfo());
System.out.println("\t\t |-" + person.getChildren()[i].getCar().getInfo());
}
}
}
这些关系的匹配都是通过引用数据类型的关联来完成的。
合成设计模式
加入说现在要求你定义出一种可以描述电脑组成的类,那么在这样的状态就必须进行拆分,电脑分为两个部分:显示器、主机;而主机上需要设置有一系列的硬件
class 电脑{
private显示器对象数组[];
private主机对象;
}
class 显示器{ }
class 主机 {
private 主板对象;
private 鼠标对象;
private 健盘对象;
}
class 主板{
private 内存对象数组[];
private CPU 对象数组[];
private显卡对象;
private硬盘对象数组[];
}
class 键盘{}
class 鼠标{}
class 内存{}
class CPU {}
class 显卡{}
class 硬盘{}
任何的人类的产品都是可以拆分,而后进行重新组合,所以这样的设计在Java之中被称为合成设计模式。