java软件设计七大原则的定义
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇内容介绍了"java软件设计七大原则的定义"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、开闭
千家信息网最后更新 2025年02月03日java软件设计七大原则的定义
本篇内容介绍了"java软件设计七大原则的定义"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1、开闭原则
1.1、定义
一个软件实体如类、模块和函数应该`对扩展开放,对修改关闭`。用抽象构建框架,用实现扩展细节。优点:提高软件系统的可复用性以及可维护性
1.2、代码演示
public interface ICourse { Integer getId(); String getName(); Double getPrice();}
public class JavaCourse implements ICourse{ private Integer Id; private String name; private Double price; public JavaCourse(Integer id, String name, Double price) { this.Id = id; this.name = name; this.price = price; } public Integer getId() { return this.Id; } public String getName() { return this.name; } public Double getPrice() { return this.price; }}
// 如果需要在原有功能基础上添加一个获取打折价格的功能,开闭原则建议不要修改原有接口,这里可以继承原有JavaCourse类,// 在原有功能之上扩展public class JavaDiscountCourse extends JavaCourse { public JavaDiscountCourse(Integer id, String name, Double price) { super(id, name, price); } public Double getDiscountPrice(){ return super.getPrice()*0.8; }}
2、依赖倒置原则
2.1、定义
`高层模块不应该依赖低层模块`,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。针对接口编程,不要针对实现编程。优点:可以减少类之间的耦合性,提高系统的稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险。
2.2、代码演示
public interface ICourse { void studyCourse();}public class JavaCourse implements ICourse { @Override public void studyCourse() { System.out.println("Geely在学习Java课程"); }}public class PythonCourse implements ICourse { @Override public void studyCourse() { System.out.println("Geely在学习Python课程"); }}
public class Geely { public void setiCourse(ICourse iCourse) { this.iCourse = iCourse; } private ICourse iCourse; public void studyImoocCourse() { iCourse.studyCourse(); }}
public class Test { public static void main(String[] args) { Geely geely = new Geely(); geely.setiCourse(new JavaCourse()); geely.studyImoocCourse(); geely.setiCourse(new FECourse()); geely.studyImoocCourse(); }}
3、单一职责原则
3.1、定义
不要存在多于一个导致类变更的原因。一个类/接口/方法只负责一项职责。优点:降低类的复杂度、提高类的可读性、提高系统的可维护性、降低变更引起的风险。
3.2、代码演示
// 不推荐的写法public class Bird { public void mainMoveMode(String birdName){ if("鸵鸟".equals(birdName)){ System.out.println(birdName+"用脚走"); }else{ System.out.println(birdName+"用翅膀飞"); } }}
public class FlyBird { public void mainMoveMode(String birdName){ System.out.println(birdName+"用翅膀飞"); }}public class WalkBird { public void mainMoveMode(String birdName){ System.out.println(birdName+"用脚走"); }}
public class Test { public static void main(String[] args) { // 不推荐写法 Bird bird = new Bird(); bird.mainMoveMode("大雁"); bird.mainMoveMode("鸵鸟"); // 推荐写法,功能单一 FlyBird flyBird = new FlyBird(); flyBird.mainMoveMode("大雁"); WalkBird walkBird = new WalkBird(); walkBird.mainMoveMode("鸵鸟"); }}
4、接口隔离原则
4.1、定义
用多个专门的接口,而不使用单一的总接口。客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。建立单一接口,不要建立庞大臃肿的接口。`尽量细化接口,接口中的方法尽量少`。适度原则,一定要适度。优点:符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。
4.2、代码演示
public interface IAnimalAction { void eat(); void fly(); void swim();}// 将一个接口拆分成3个接口public interface IEatAnimalAction { void eat();}public interface IFlyAnimalAction { void fly();}public interface ISwimAnimalAction { void swim();}
public class Dog implements ISwimAnimalAction,IEatAnimalAction { @Override public void eat() { } @Override public void swim() { }}
5、迪米特原则
5.1、定义
一个对象应该对其他对象保持最少的了解,又叫最少知道原则。`尽量降低类与类之间的耦合`。优点:降低类之间的耦合。
5.2、代码演示
public class Boss { public void commandCheckNumber(TeamLeader teamLeader){ teamLeader.checkNumberOfCourses(); }}public class Course {}public class TeamLeader { public void checkNumberOfCourses() { ListcourseList = new ArrayList (); for (int i = 0; i < 20; i++) { courseList.add(new Course()); } System.out.println("在线课程的数量是:" + courseList.size()); }}
public class Test { public static void main(String[] args) { Boss boss = new Boss(); TeamLeader teamLeader = new TeamLeader(); boss.commandCheckNumber(teamLeader); }}
6、里氏替换原则
6.1、定义
所有引用基类(父类)的地方必须能透明地使用其子类的对象。通俗地讲,子类可以扩展父类的功能,但不能改变父类原有的功能。里氏替换原则意思说,在软件中将一个基类对象(父类)替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用基类对象。里氏代换原则是实现开闭原则的重要方式之一,由于使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在程序运行时再确定其子类类型,用子类对象来替换父类对象。例如:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类。但是我喜欢狗,不能据此断定我喜欢动物,因为我并不喜欢老鼠,虽然它也是动物。
6.2、实现原则
1) `子类可以实现父类的抽象方法,但是不能覆盖/重写父类的非抽象方法`。2) 子类中可以增加自己特有的方法。3) 当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。4) 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
参考: Java七大设计原则
7、组合/聚合复用原则
7.1、定义
尽量使用合成和聚合,而不是集成来达到复用的目的。该原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新的对象通过向这些对象的委派达到复用已有功能的目的。
"java软件设计七大原则的定义"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
原则
对象
接口
方法
子类
功能
软件
代码
优点
演示
设计
动物
可维护性
程序
复用
耦合
七大
之间
写法
可读性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全意识科普知识问答
网络安全应该注意些什么
服务器做云点播
从网页输入数据库查询
网易版服务器宣传片
服务器提前回响应
亳州扶贫数据库
探索敏捷软件开发组织的知识管理
信息安全 sql数据库
数据库批量导入和更新
微信服务器记录吗
软件开发的研发成本怎么区分
武侯网络安全检查
零基础做网络安全
4399游戏服务器是渠道服吗
如何自己开设mc服务器
软件开发公司职位图
云鼎互动网络技术快递
新建风电场在线网络安全检测
国产服务器商
瀚高数据库苗建
网络安全电教片
我的世界斗罗服务器魂环怎么吸收
未变异者服务器创建
软件开发小公司加班多吗
大话服务器配置
hive中查询数据库的格式
学校网络安全法活动总结
上海惠尔物流网络技术
山东库存软件开发平台