Java设计所遵循的准则

1 类的关系

在这里插入图片描述

1.1一般关系

主要是体现类的继承和实现
在这里插入图片描述

1.2关联关系

类之间是平级关系
在这里插入图片描述

1.3聚合关系

整体和部分的关系
在这里插入图片描述

1.4合成关系

比聚合关系强,整体对部分对象负责,掌管生命周期
在这里插入图片描述

1.5依赖关系

依赖总是单向的,关联可以是双向的,依赖的一方的属性不为被依赖的类。
在这里插入图片描述

1.6 简单的例子

有一个机房,机房有一台电脑。
电脑有开机关机状态,可以被打开,可以被关闭,被使用。
有个学生进入机房,使用电脑。
这样一个场景,使用Java语言模拟一下。
在这里插入图片描述

/**
 * 机房类
 *
 * @author Guowx
 * @date 2019/5/8
 */
public class PCRoom {

    private Computer cp;

    public Computer configPC() {
        cp = new Computer();
        System.out.println("机房配置了一台电脑...");
        return cp;
    }

}
/**
 * 电脑类
 * 2019/5/8
 *
 * @author Guowx
 */
public class Computer {

    // 电脑的状态
    private boolean status = false;

    public void on() {
        this.status = true;
        System.out.println("电脑开机了...");
    }

    public void off() {
        this.status = false;
        System.out.println("电脑关机了...");
    }

    public boolean isOpen() {
        return this.status==true ? true : false;
    }

}
/**
 * 学生类
 * 2019/5/8
 * Guowx
 */
public class Student {

    private boolean checkStatus(Computer pc) {
        return pc.isOpen();
    }

    public void isUsed() {
        System.out.println("进入机房...");
        PCRoom pcRoom = new PCRoom();
        Computer pc = pcRoom.configPC();
        if (checkStatus(pc)) {
            System.out.println("电脑有人使用了...");
        } else {
            System.out.println("电脑没人使用...");
            pc.on();
        }
    }

}

测试类

public class Test {

    public static void main(String[] args) {
        Student student = new Student();
        student.isUsed();
    }

}

结果:
进入机房…
机房配置了一台电脑…
电脑没人使用…
电脑开机了…

2 抽象类设计原则

一个设计者应力图遵循这些原则

  1. 具体类不是用来继承的
  2. 抽象类应该有尽可能多的共同代码
  3. 抽象类应该尽可能有少量的数据

在这里插入图片描述

3 继承的使用原则

在这里插入图片描述

3.1 里氏代换原则 Liskow Substitution Principle

定义——在一个程序A中,类型为T1的对象换成类型为T2的对象,程序P的行为没有发生变化,T2一定是T1的子类型。

Java语言本身就遵循里氏代换原则,不满足里氏代换原则编译会出错。

吐槽:其实就是Java中的多态,只是在模式的设计上叫里氏代换原则,脱离了Java语言,这个原则在设计中依然可以参考使用。

public class Person {
    public static void main(String[] args) {
        speakName(new Son());		// 传子类参数
        speakName(new Father());		// 传父类参数
    }

    public static void speakName(Father person) {			// 反过来的代换不成立
        person.callName();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值