UML面向对象的设计原则

UML面向对象的设计原则

里氏替换原则

不满足LSP的方案

CS游戏中的枪械类图,士兵使用枪杀敌,具体用什么枪,调用的时候才知道。有一种玩具手枪,增加一个类ToyGun,射不出子弹,业务调用类出现了问题。

 

Abstractgun抽象类

public abstract class Abstractgun {  //枪支抽象类

public Abstractgun() { } 

public abstract void shoot();  //枪用来射击杀戮!

}

Handgun实现类

publicclassHandgun extends Abstractgun {  //手枪实现类

@Override               //手枪的特点是携带方便,射程短

public Handgun() { }

public void shoot() {

System.out.println("手枪射击...");

}

}

ToyGun实现类

publicclassToyGun extends Abstractgun {  

@Override

public void shoot() { }         //玩具枪是不能射击的,虚构

}

Soldier士兵类

publicclassSoldier {     

public Soldier() { }

public void kill(Abstractgun gun){

System.out.println("士兵开始杀人...");

gun.shoot();

}

}

测试代码:

            classProgram

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值