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 String getInfo(){return "汽车型号:"+"汽车价值"+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(){rerurn this.car;}public String getInfo(){return "姓名"+this.name+"年龄"+this.age;}
}
public class Demo{public static void mian(String args[]){//第一步,声明对象并且设置彼此的关系Person person = new Person("张三",12);Car car = new Car("小米",1000.23);person.setCar(car);//一个人有一辆车car.setPerson(person);//一辆车属于一个人//第二步,相应关系获取数据System.out.println(person.getCar().getInfo());System.out.println(car.getPerson().getInfo());}
}
//本次操作两个自定义的数据类型,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.00)) ; // 匿名对象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 鼠标 {}
class 内存 {}
class CPU {}
class 显卡 {}
class 硬盘 {}
任何人类的产品都是可以拆分的,然后进行重新组合,这样的设计在java之中被称为合成设计模式。
Java基础(十二)相关推荐
- c++二进制文件java读取int_吃透Java基础十二:IO
一.什么是IO流 Java中将输入输出抽象称为流,就好像水管,将两个容器连接起来.流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流. 按数据来源(去向) ...
- Java实习生常规技术面试题每日十题Java基础(二)
目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...
- 深入Java基础(二)——字符串家族
上一篇写了基本数据类及其包装类详解,这篇我们就来讨字符串这个家族吧,这个也是重中之重啊!!! 文章结构: 1.众说纷纷的equals和==: 2.字符串家族的基本知识以及字符串家族的源码解读: 3.字 ...
- Java校招笔试题-Java基础部分(二)
导语 Java面试题集2021版 Java基础部分二 14.hashCode方法的作用? 15.写clone()方法时,通常都有一行代码,这行代码是什么? 16.静态变量和实例变量的区别? 17. ...
- Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举
Java基础(一):编译和解释.数据类型.变量作用域.String常用方法.数组.面向对象.异常 Java基础(二):集合.IO流(Zip压缩输入/输出流等).File文件类.反射.枚举 Java异常 ...
- java基础(十) 深入理解数组类型
戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 1. 数组类简介 在java中,数组也是一种引用类型,即是一种类. ...
- java参数注解pam_吃透Java基础十:注解
一.什么是注解 官方定义: 注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分.注解对于代码的运行效果没有直接影响. 注解有许多用处,主要如下: 提供信息给编译器: ...
- java基础总结二--让大学生活不再迷茫
承接我的上一篇博客java基础总结1 https://blog.csdn.net/weixin_43410352/article/details/87073372 10.java的三大特性 封装:这是 ...
- Java基础系列二:Java泛型
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.泛型概述 1.定 ...
- Java基础知识(二) 面向对象的技术
Java基础知识 面向对象的技术 1. 面向对象与面向过程有什么区别 2. 面向对象有哪些特征 3. 什么是继承 4. 组合和继承的区别 5. 多态的实现机制 6. 重载和覆盖有什么区别 7. 抽象类 ...
最新文章
- oracle函数,oracle编写函数
- JavaScript TreeView
- C语言 实现一个函数判断year是不是润年
- Redis java使用
- python增加工作日列_将工作日添加到日期字段
- JSON.stringify的三个参数(转载)
- WINX新增(1): KMP字符串查找算法
- 如何使用BootStrapDialog实现数据的添加与删除?
- luvcview-0.2.4移植
- C语言中callback回调函数,C++回调函数(callback)的使用
- nvme linux读写测试工具,不同硬件平台(intel/AMD)和不同OS/FS/测试工具下NVMe SSD性能简测...
- Filter过滤器实现登录权限拦截
- 论文解读:FASPell: A Fast, Adaptable, Simple, Powerful Chinese Spell Checker Based On DAE-Decoder Paradig
- 超人气网站集合,快来pick你中意的吧!
- struct结构体里能放函数吗?
- RBP系统管理之系统用户管理
- 使用python讲二进制转换为音频文件_Python使用ffmpy将amr格式的音频转化为mp3格式的例子...
- 火焰特性识别的Matlab实现方法
- OSTA-LINUX3-选择题练习题整理
- hilink互联技术_hilink是什么意思