类关联结构
引用传递是整个JAVA开发与设计过程中3最为重要的技术组成,对于引用传递也与实际的生活密切相关
引用应用分析一
假如说现在说比较好,于是有些人可以有一辆汽车,当然,有些人还是乘坐11路汽车,要求可以通过面向对象的设计实现以上的这种关系转换。
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;
}
}
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 + "价格: " + this.price;
}
}
public class Demo {
public static void main(String args[]) {
//第一步:声明对象并且设置彼此的关系
Person person = new Person("林强",29);
Car car = new Car("宾利",8000000.00);
person.setCar(car); //一个人有一辆车
car.setPerson(person);//一辆车属于一个人
//第二步:根据关系获取数据
System.out.println(person.getCar().getInfo()); //代码链
System.out.println(car.getPerson().getInfo());
}
}
/*汽车品牌型号:宾利价格: 8000000.0
姓名:林强、年龄:29*/
本次person和car都是自定义类型,但是person和car都可以明确描述出某一类群体,现在是针对群体关系做出的设置。
自身引用
引用应用分析二
现在已经确定了人与车的关系,但是现在也可以进一步操作该操作的完善 ,例如:一个人肯定会有孩子,孩子也会成年,成年之后也可以有车。
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 + "、汽车价值:" + this.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 ArrayDemo {
public static void main(String[] args) {
//第一步:声明对象并且设置彼此的关系
Person person = new Person("吴硕" , 29);
Car car = new Car("'宾利" , 8000000.00);
Person childA = new Person("林强" , 18);
Person childB = new Person("郭仁义" , 18);
childA.setCar(new Car("BMW X1" , 300000.00));
childB.setCar(new Car("法拉利" , 1500000.00));
person.setChildren(new Person[]{
childA,childB});
person.setCar(car);//一个人有一辆车
car.setPerson(person);//一辆车属于一个人
//第二步:根据关系获取数据
System.out.println(person.getCar().getInfo());//代码链
//汽车品牌型号:'宾利、汽车价值:8000000.0
System.out.println(car.getPerson().getInfo());//通过车找到人,再找到人的具体信息
//姓名:林强、年龄:29
//根据人找到所有的孩子以及他们对应的车
for (int x = 0 ; x < person.getChildren().length ; x++){
System.out.println("\t|-" + person .getChildren()[x].getInfo());
System.out.println("\t\t|-" + person.getChildren()[x].getCar().getInfo());
}
/*
* |-姓名:林强、年龄:18
|-汽车品牌型号:BMW X1、汽车价值:300000.0
|-姓名:郭仁义、年龄:18
|-汽车品牌型号:法拉利、汽车价值:1500000.0
* */
}
}
这些关系的匹配都是通过引用数据类型的关联来完成的。
三、合成设计模式
拆分后再进行组合的设计模式被称为合成设计模式。