类关联结构
引用传递是整个Java开发与设计过程之中最为重要的技术组成,对于引用传递也与实际的生活密切相关。
引用分析一:
假设说现在生活比较好,一个人一辆车,
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 ; //一个人有一辆车
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 ArrayDemo {
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()) ;
}
}
本次所操作的两个类型: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) ;
Person childA = new Person("林强", 18) ;
Person childB = new Person("郭仁义", 19) ;
childA.setCar(new Car("BMW X1", 300000.00)) ;
childB.setCar(new Car("法拉利", 1500000)) ;
person.setChildren(new Person [] {childA, childB}) ;
Car car = new Car("宾利", 8000000.00) ;
person.setCar(car) ; //一个人有一辆车
car.setPerson(person) ; //一辆车属于一个人
System.out.println(person.getCar().getInfo()) ; //代码链
System.out.println(car.getPerson().getInfo()) ;
// 根据人找到所有的孩子以及对应的汽车
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()) ;
}
}
}
这些关系的匹配都是通过引用数据类型的关联来完成的。
合成设计模式
假设说现在要求定义出一种可以描述电脑组成的类,那么在这样的状态下就必须进行拆分,电脑分为两个部分:显示器、主机,而主机上需要设置有一定系列硬件。
class 电脑 {
private 显示器 对象数组 [] ;
private 主机 对象 ;
}
class 显示器 {}
class 主机 {
private 主板 对象 ;
private 鼠标 对象 ;
private 键盘 对象 ;
}
class 主板 {
private 内存 对象数组 [] ;
private CPU 对象数组 [] ;
private 显卡 对象 ;
private 硬盘 对象数组 [] ;
}
class 键盘 {}
class 鼠标 {}
public class ArrayDemo {
public static void main(String args[]){
}
}
任何的人类的产品都是可以拆分,而后进行重新组合,所以这样的设计在java之中被称为合成设计模式。