UML面向对象的设计原则

本文介绍了UML面向对象设计的两个重要原则——里氏替换原则(LSP)和开闭原则(OCP)。通过案例分析了不满足LSP时的问题,并提出解决方案,使ToyGun类不再继承Abstractgun。同时,展示了违反OCP的例子及如何通过定义接口和实现类来满足OCP,使得BookStore类在增加计算机书籍时无需修改。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值