一、面向对象的重要经验:
记住一点:谁拥有数据,书就是对外提供这些数据的方法。
二、举例:
1、人在黑板上画圈:
指挥者:人,发出画的信号,
执行者:圈,它是主体对象,进行对自身的画的方法的操作
1)这里的对象是圈,人只是一个指挥者,黑板是一个载体。
2)圈拥有圆心和半径,它有画的方法。
2、列车司机刹车:
指挥者:人,发出停车的信号--->给车一个踩刹车的外力
执行者:列车,它是主体对象,进行对自身进行刹车的方法。
列车知道如何进行操作和控制,让车停下来
3、售货员统计售货小票的金额:
指挥者:售货员,只是最终得到一个结果,并没有获取小票上的金额的方法
执行者:小票,它是主体对象,自身有获取金额的方法。
4、人关门:
指挥者:人,给门发出关的信号
执行者:门,它是主体对象,自身知道如何转动门轴,弹簧等将门关上。
第二节 面试的具体示例
一、示例一:
需求:球从一根绳子的一段移动到了另一端
分析:
球:有移动的方法,但是需要知道移动到下一个位置的点,这需要绳子提供
绳子:有获取当前点的方法,可以作为球的参数,让球知道下个点的位置
获取当前位置,可以使用计时器,时刻变化的。
具体代码(只做简单演示):
- public class RollTest {
- public static void main(String[] args) {
-
- }
- }
-
- class Rope{
-
- private Point startPoint;
- private Point endPoint;
- public Rope(Point startPoint,Point endPoint){
- this.startPoint = startPoint;
- this.endPoint = endPoint;
- }
- public Point getStartPoint() {
- return startPoint;
- }
- public void setStartPoint(Point startPoint) {
- this.startPoint = startPoint;
- }
-
- public Point nextPoint(Point currentPoint){
-
-
-
-
-
-
- if(currentPoint==endPoint)
- return null;
- return currentPoint;
- }
- }
-
-
- class Ball{
-
- private Rope rope;
- private Point currentPoint;
- public Ball(Rope rope, Point startPoint){
- this.rope = rope;
- this.currentPoint =startPoint;
- }
-
- public Rope getRope() {
- return rope;
- }
-
- public Point getCurrentPoint() {
- return currentPoint;
- }
-
- public void move(){
- currentPoint = rope.nextPoint(currentPoint);
- System.out.println("小球移动到了" + currentPoint);
- }
- }
二、示例二
需求:两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子
分析:
这里有两个是原材料,不作为操作方法的对象,而作为被操作的对象,
即石头和树作为材料进行加工,而操作这两个对象的就是工厂,将其加工成为石刀和椅子
1、这里将石头磨成石刀,石头并不操作的对象,而是工厂
2、石刀是对象,有砍树的方法
3、加工椅子的工厂将树加工成为椅子
具体代码:
- public class StoneknifeTest {
- public static void main(String[] args) {
-
- }
- }
-
- class ChairFactory{
- private String trees;
- public ChairFactory(String trees) {
- this.trees = trees;
- }
- public String creat(String trees){
- return "好多的椅子啊";
- }
- }
-
- class KnifeFactory{
- private KnifeFactory kf;
- private Stone stones;
- private String stoneKnife;
- public KnifeFactory(Stone stones){
- this.stones = stones;
- }
-
- public StoneKnife creat(Stone firstStone,Stone secondStone){
- StoneKnife sk = null;
-
-
- return sk;
- }
- }
-
- class Stone{
- private Stone stone;
- public Stone(Stone stone){
- this.stone = stone;
- }
- }
-
- class StoneKnife {
- public StoneKnife() {}
-
- public Tree cutTree(StoneKnife sk,String tree){
- Tree trees = null;
-
- return trees;
- }
- }
-
- class Tree{
- private Tree tree;
- public Tree(Tree tree){
- this.tree = tree;
- }
- }