1 类关联结构
引用传递是整个Java开发过程之中最为重要的技术组成。
定义一个Person类、一个Car类,人可以拥有车,车也可以有车主。此时代码应为:
class Car{
private String name;
private double price;
private Person person;
public Car(){}
public Car(String name, double price){
this.name = name;
this.price = price;
}
public String getInfo(){
return "Cname: " + this.name +
"Cprice: " + this.price;
}
public void setPerson(Person person){
this.person = person;
}
public Person getPerson(){
return this.person;
}
}
class Person{
private String name;
private int age;
private Car car;
public Person(){}
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getInfo(){
return "Pname: " + this.name +
"Page: " + this.age;
}
public void setCar(Car car){
this.car = car;
}
public Car getCar(){
return this.car;
}
}
public class JavaDemo{
public static void main(String[] args){
Person person = new Person("lks", 24);
person.setCar(new Car("BWM",1000000));
System.out.println(person.getInfo());
System.out.println(person.getCar().getInfo()); //***
}
}
2 自身关联
定义一个Person类、一个Car类,人可以拥有车,车也可以有车主。Person有孩子,孩子也可能有车,此时代码应为:
class Car{
private String name;
private double price;
private Person person;
public Car(){}
public Car(String name, double price){
this.name = name;
this.price = price;
}
public String getInfo(){
return "Cname: " + this.name +
"Cprice: " + this.price;
}
public void setPerson(Person person){
this.person = person;
}
public Person getPerson(){
return this.person;
}
}
class Person{
private String name;
private int age;
private Car car;
private Person children[];
public Person(){}
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getInfo(){
return "Pname: " + this.name +
"Page: " + this.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 class JavaDemo{
public static void main(String[] args){
Person person = new Person("lks", 24);
Person childA = new Person("llj", 12);
Person childB = new Person("zsl", 4);
childA.setCar(new Car("asd", 4));
childB.setCar(new Car("bbc", 10));
person.setCar(new Car("BWM",1000000));
person.setChildren(new Person[]{childA, childB});
System.out.println(person.getInfo());
System.out.println(person.getCar().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());
}
}
}
3 合成设计模式
定义出一种可以描述电脑组成的类,这时就必须进行拆分,电脑有两个部分:显示器和主机。此时伪代码应为:
class 电脑{
private 显示器 对象名称;
private 主机 对象名称;
}
class 显示器{}
class 主机{
private 主板 对象名称;
private 键盘 对象名称;
private 鼠标 对象名称;
}
class 主板{
private 内存 对象名称[];
private CPU 对象名称[];
private 显卡 对象名称;
private 硬盘 对象名称[];
}
class 键盘{}
class 鼠标{}
class 内存{}
class CPU{}
class 显卡{}
class 硬盘{}
任何的人类产品都是可以拆分,而后进行重新组合,所以这样的设计在java之中称为合成设计模式。