java软件设计七大原则的定义
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,本篇内容介绍了"java软件设计七大原则的定义"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、开闭
千家信息网最后更新 2024年11月24日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安全错误
数据库的锁怎样保障安全
软件开发研究生通知书
数据库连接导致tomcat溢出
美国网络安全工作人员
h5网络安全宣传
北京旺顺千通网络技术
如何创建数据库并维护
centos 服务器系统
未来之役服务器tick多少
sql2017创建数据库失败
网络安全态势感知平台应支持
观看网络安全片体会心得体会
河北发展网络技术咨询产品
奉贤区上门软件开发厂家活动方案
鼎呈网络技术有限公司
万网服务器邮件
idc2020全球服务器出货量
利用公共网络架设专用网络技术
ss搭建vpn服务器
浙江软件开发驻场怎么样
软件开发运维服务费
线性代数思维导图软件开发
视频数据库是什么软件
上海任务态势系统软件开发
大猪蹄子互联网科技有限公司
档案数据库管理系统安全
4g网络技术的主要参数
服务器可视化管理工具下载
阿里互联网科技基金代码
芒果DB数据库的安全性
现在网络技术状况