Java五大基本原则

【水文学法总结】河道内生态流量计算方法(含MATLAB实现代码) 简介水文学法实现河道内生态流量计算 阅读详情

Java是面向对象的程序语言,拥有五大原则

目录

单一职责原则

开放封闭原则

里氏替换原则

依赖倒置原则

接口分离原则


单一职责原则

一个类的功能要单一,不要把太多的代码与方法都写在一个类中。

开放封闭原则

开放->扩展开放,拥有扩展能力,实现单继承,优先多接口实现

里氏替换原则

子类应当替换父类出现在父类可能出现的任何位置上

依赖倒置原则

具体依赖抽象,具体不依赖具体,抽象不依赖具体

接口分离原则

接口尽量要单一功能定义

有几个接口  名字分别叫  eat  read  fly

实现这个接口的实例类  有  熊  人  鸟

解决方案就是写成三个独立的接口,人实现  eat read  熊实现eat  鸟实现 eat  fly

设计一个系统

用户数据管理系统

对象

用户对象:管理员,普通用户

数据对象:订单对象,收藏夹对象

功能

管理员用户:登录,注册,管理用户名单

普通用户:登录,注册,购物,支付

类:

AdminUser  管理员用户,CommonUser 普通用户,User(是所有用户的父类,具备其子类都具有的属性,特征),Manage--测试类

接口:

LoginInterface  登录接口  其底下有两个子接口  LoginOfCodeInterface--验证码登录接口,LoginOfPwdInterface--密码登录接口,   RegistInterface  用户注册接口

对于接口的实现类:

各用户对象的登录 注册 实现类

AdminUserLogin  管理员用户登录的实现类

CommonUserLogin  普通用户注册的实现类

我把源代码放在下面

User

/**
 * 这个User是所有类的父类
 * @author TZH
 *
 */
public class User {
     private String username;
     private String pwd;
     
     private String phoneNum;
     private int id;
     
     public void setUsername(String username) {
    	 this.username = username;
     }
     public void setPwd(String pwd) {
    	 this.pwd = pwd;
     }
     public void setphoneNum(String phoneNum) {
    	 this.phoneNum = phoneNum;
     }
     public void setid(int id) {
    	 this.id = id;
     }
     
     
     
     public String getUsername() {
    	 return username;
     }
     public String getPwd() {
    	 return pwd;
     }
     public String getphoneNum() {
    	 return phoneNum;
     }
     public int getid() {
    	 return id;
     }
}

AdminUser

/**
 * 这是类指的是管理员用户
 * @author TZH
 *
 */
public class AdminUser extends User{
        private static AdminUser admin = new AdminUser("admin","admin123");
        
        private AdminUser(String username,String pwd) {
        	this.setUsername(username);
        	this.setPwd(pwd);
        }
        //向外的对象出口
        public static AdminUser getAdminUser() {
        	return admin;
        }
        public void login(LoginOfPwdInterface li,String username,String pwd) {
        	li.login(username,pwd);
        }
        public void login(LoginOfCodeInterface li,String phoneNum,int logincode) {
        	li.login(phoneNum,logincode);
        }
}

CommonUser

public class CommonUser extends User{
       private static CommonUser cu = new CommonUser(109898,"嘻哉","Lovetzh20011011","1892120");
       
       private CommonUser(int id,String username,String pwd,String phoneNum) {
    	   this.setUsername(username);
    	   this.setPwd(pwd);
    	   this.setphoneNum(phoneNum);
    	   this.setid(id);
    	   //创建一个向外的对象出口    	  
       }
       public static CommonUser getCommonUser() {
		   return cu;
	   }
       public void regist(RegistInterface ri,int id,String username,String pwd,String phoneNum) {
    	   ri.rigist(id, username, pwd, phoneNum);
       }
}

LoginInterface

/**
 * @author TZH
 *
 */
public interface LoginInterface {
      public void login();
}

LoginOfCodeInterface

public interface LoginOfCodeInterface extends LoginInterface{
          public void login(String phoneNum,int logincode);
}

LoginOfPwdInterface

public interface LoginOfPwdInterface extends LoginInterface{
          public void login(String username,String pwd);
}

RegistInterface

public interface RegistInterface {
       public void rigist(int id,String username,String pwd,String phoneNum);
}

AdminUserLogin

public class AdminUserLogin implements LoginOfPwdInterface{
	private AdminUser admin;
	public AdminUserLogin(AdminUser admin) {
		this.admin = admin;
	}
          public void login(String username,String pwd) {
        	  if(admin.getUsername().equals(username)) {
        		  if(admin.getPwd().equals(pwd)) {
        			  System.out.println("密码正确!登录成功");
        		  }else {
        			  System.out.println("密码错误!登录失败");
        		  }
        	  }else {
        		  System.out.println("账号错误!登录失败");
        	  }
          }
          public void login() {
        	  
          }
}

CommonUserRegist

public class CommonUserRegist implements RegistInterface{
	       private CommonUser cu;
	       public CommonUserRegist(CommonUser cu) {
	    	   this.cu = cu;
	       }
	
	       public void rigist(int id,String username,String pwd,String phoneNum) {
		              if(cu.getid()==(id)) {
		            	  if(cu.getUsername().equals(username)) {
		            		  if(cu.getPwd().equals(pwd)) {
		            			  if(cu.getphoneNum().equals(phoneNum)) {
		            				  System.out.println("注册成功,ID为"+id+",用户名为"+username+",密码为"+pwd+",手机号为"+phoneNum);
		            			  }else{
		            				  System.out.println("手机号码格式错误");
		            			  }
		            		  }else {
		            			  System.out.println("密码格式错误");
		            		  }
		            	  }else {
		            		  System.out.println("用户名格式错误");
		            	  }
		              }else {
		            	  System.out.println("ID格式错误");
		              }
	       }
}

Manage 

public class Manage {
	public static void main(String[] args) {
          AdminUser admin2 =AdminUser.getAdminUser();
          AdminUserLogin adminUserLogin = new AdminUserLogin(admin2);
          admin2.login(adminUserLogin,"admin","admin123");
          
          CommonUser cu1 = CommonUser.getCommonUser();
          CommonUserRegist cur = new CommonUserRegist(cu1);
          cu1.regist(cur, 109898, "嘻哉", "Lovetzh20011011", "1892120");
	}
}

放入运行环境,跑起来后就是这样的。

这个测试 ,只是为了更好的理解五大基本原则

【YOLO11改进 - 注意力机制】SCSA通过结合空间注意力和通道注意力,提高各种下游视觉任务的性能。 阅读详情

相关推荐

NIST随机性测试实战:从理论公式到结果解读

本文详细解析了NIST随机性测试的实战应用,从基础测试到高级测试,涵盖频数测试、块频数测试、游程测试等核心方法。通过实际案例和参数设置经验,帮助读者理解如何解读测试结果并排查常见问题,提升随机数生成质量。文章还分享了自动化测试流程和硬件RNG特殊处理技巧,适合密码学和区块链开发者参考。

weixin_29323365的博客 314

java三大特性、五大原则

这里写自定义目录标题java三大特性、五大原则java三大特性五大原则 java三大特性、五大原则 java三大特性 1.封装 隐藏类的属性和功能实现,增强类的安全性和简化编程,通过提供公用接口,以特定的访问权限来使用类成员。 2.继承 对共有的特性和行为进行抽取,形成父类,继承就是子类继承父类的特征和行为,使得子类拥有父类的功能和特性,可以对父类功能进行扩展,但不能修改。 3.多态 多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例的相同方法在不同情形有不同表现形式。 五大原则 1.里氏替换原

qq_36592254的博客 725

Maltab GUI课程设计——网络爬虫程序(基金连涨连跌提醒)

Maltab GUI课程设计——网络爬虫程序(基金连涨连跌提醒)

果果爱腰果的博客 849

JAVA面向对象的五大基本原则

文章目录原则一:单一职责原则原则二:开放封闭原则原则三:LisKov替换原则原则四:依赖倒置原则原则五:接口隔离原则 了解面向对象的思想时,之前仅仅了解了面向对象的三大特性,最近才发现原来面向对象在编程时还有五道金科玉律,这五大基本原则不必一定要遵守,但如《OOD启示录》中所说的:“你并不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看做警铃,若违背了其中的一条,那么警铃就会响起。” 原则一:单一职责原则 简单来说,我们所创建的每一个类的职责越单一,越专注最好,最好只做一件事。是面向对

weixin_44062399的博客 2508

手把手教你用Python 3.11和Node.js 18在Windows 11上搭建Dify开发环境

本文提供了一份详尽的Windows 11本地Dify开发环境搭建指南。文章手把手教你完成从Python 3.11、Node.js 18的安装配置,到PostgreSQL、Redis数据库服务的部署,再到前后端服务的启动与联调的全过程,并包含常见问题排查与效能优化建议,旨在帮助开发者构建一个稳定、可调试的Dify本地开发环境。

fire9的博客 645

Sentaurus TCAD学习——Scheme编程语言

sentaurus scheme语言学习记录

摸摸小熊猫的博客 964

Java三大特性,五大原则,深刻解读,读完这一篇就够了!

Java面向对象三大基本特性,五大基本原则,总结三大基本特征封装:继承:多态:五大基本原则一.单一责任制原则:二.开放密闭原则:三.里氏原则:四.依赖倒置原则:五.接口隔离原则: 三大基本特征 封装: 继承: 多态: 五大基本原则 一.单一责任制原则: 单一职责原则SRP(Single Responsibility Principle) 是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。 二.开放密闭原则: 开放封闭原则OCP(Op

男强的博客 1113

用友U8登录慢卡顿?别急着重启服务器,先检查UA_Message这张表(附SQL清理脚本)

本文针对用友U8登录慢卡顿问题,深入分析UA_Message表积压消息对系统性能的影响,并提供SQL清理脚本和优化方案。通过诊断、清理、索引优化和预防措施四步法,显著提升U8客户端登录速度,适用于后台管理和数据库维护场景。

weixin_28726671的博客 380

java面向对象的五大基本原则

java面向对象的五大基本原则: 1.单一职责原则:一个类,最好只做一件事,只有一个引起它变化。 2.开放封闭原则:对扩展开发,对修改封闭。 3.里氏替换原则:子类必须能够替换其基类。里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。 4.依赖倒置原则:依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。 ...

逆水行舟,不进则退 2069

STM32F407 CubeMX UART DMA高效解析BNO085九轴数据

本文详细介绍了如何在STM32F407平台上使用CubeMX配置UART和DMA高效解析BNO085九轴传感器数据。通过DMA循环接收机制实现低CPU占用的实时数据采集,并分享数据解析技巧、错误处理及实战调试经验,为嵌入式开发者提供完整解决方案。

o4p5q6r7s的博客 235

飞牛NAS+Docker打造私人IPTV直播源:手把手教你部署iptv-api

本文详细介绍了如何在飞牛NAS上通过Docker部署iptv-api,打造私人IPTV直播源。从SSH配置到Docker容器部署,手把手教你实现自动更新直播源、多终端支持的解决方案,适用于Kodi、PotPlayer等播放器,提升家庭娱乐体验。

earth的博客 5575

Java 面向对象开发的五大原则

概览:SOLID S-SingleResponsibility-单一职责原则 O-OpenClose-开闭原则 L-LiskovSubstituion-里氏替换原则 I-InterfaceSegregation-接口隔离原则 D-DependencyInversion-依赖倒置原则

liyang_self的博客 773

基于Simulink环境,提供一个关于如何对无人机电源DC-DC变换器进行仿真建模的示例

无人机电源要求:无人机的各个子系统(如电机、传感器、通信模块等)可能需要不同级别的电压供应。重要性稳定性:稳定的电源是保证无人机各部件正常工作的基础。效率:高效的电源管理可以显著增加飞行时间和任务执行能力。挑战多负载适应性:需要能够为不同负载提供合适的电压和电流。动态响应:快速响应负载变化的能力对于维持系统稳定性至关重要。首先明确要模拟的任务内容。设计一个能够在不同负载条件下为无人机提供稳定电压的DC-DC变换器。根据无人机的工作状态调整控制策略以维持最佳性能。

xiaoheshang_123的博客 135

java面向对象的三大特征,五大基本原则

java面向对象的三大特征,五大基本原则 三大特性:封装,继承,多态。 1)封装 将对象的属性和实现细节隐藏起来,只提供公共的访问方式。 好处:a。将外界的变化隔离开,使程序具备独立,安全和稳定性。 b。便于设计者使用,提高了代码的复用性 方式:将某一功能,属性抽离出来,独立写成单独的方法或类。 设置访问权限可以限定该功能或属性可以...

weixin_43499900的博客 2037

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java三大基本特性,五大基本原则

三大基本特性 封装 >dfd 继承 多态

浪里大白条的博客 989

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java 面向对象的三大特性和五大基本原则

Java 是一种广泛使用的面向对象编程语言,其设计理念基于面向对象的基本特性和原则。面向对象编程(OOP)通过封装、继承和多态来构建清晰、灵活和可重用的代码结构。而遵循五大基本原则(SOLID原则)则是提升代码质量的关键,它指导开发者优化设计,减少耦合,提高系统的灵活性和可测试性,帮助应对复杂的软件需求和变化的市场环境。接下来,我们将深入探讨 Java 面向对象的三大特性及五大基本原则。

~ 1122

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java开发五大原则_Java学习之路-五大基本原则

Java学习之路-五大基本原则Java学习之路-五大基本原则转载:https://github.com/hollischuang/toBeTopJavaer/blob/master/basics/java-basic/principle.md下面懒得打字了,就简称“哈理”吧单一职责原则(Single-Resposibility Principle)其核心思想为:一个类,最好只做一件事,只有一个引起...

weixin_31321361的博客 286

Java中面向对象五大基本原则

Java中面向对象五大基本原则

sanmansan的博客 866

java面向对象的三大基本特征和五大原则

java面向对象的三大基本特征和五大原则1. 三大基本特征2. 五大基本原则 1. 三大基本特征 01:封装 封装是面向对象里面最简单的也是最好理解的。通俗一点来讲的话,就是定义了一个类,类里面的方法是私有的,不能够被外界访问,防止其他程序来做更改。一般来说使用private来修饰。封装对数据提供了有效的保护。 02:继承 要记住java中只能单继承,如果要用多个请用实现。继承有子类和...

Z__Sheng的博客 745

java面向对象的三大特性和五大基本原则

1.继承 继承是一种子类复用父类的属性和方法的一种机制,这是属于类与类之间的关系,在java中用extend关键字,提供继承信息的类称为父类(超类,基类);得到继承的类称为子类(派生类),继承让软件系统中有了一定的延续。如果父类具备的功能需要子类特殊定义的时候,需要进行方法的重写。 2.封装 封装是一种信息隐蔽的技术,他的目是使得对象的使用者和生产者分离,使对象的定义和实现分开。通过对数据的封装,...

莫失莫忘的博客 289

学习Java编程面向对象的五大基本原则

Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范、继承是类与类之间联系的一种形式、而多态为系统组件或模块之间解耦提供了解决方案。 单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以...

qq_36243386的博客 229

003_Java面向对象的五大基本原则

单一职责原则SRP(SingleResponsibilityPrinciple) 是指一个类的功能要单一,不能包罗万象。 如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。开放封闭原则OCP(Open-ClosePrinciple) 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。 比如:一个网络模块,原来只有服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户...

小伍的专栏 196

Java 三大特征五大基本原则

三大特征: 封装 继承 多态 五大基本原则: 单一职责 开放封闭 接口隔离 里氏替换 依赖倒置

IronWring_Fly的博客 252

面向对象五大基本原则是什么 思维导图 代码示例(java 架构)

一个类应该只有一个引起它变化的原因。

qq_33240556的博客 449

Java面向对象三大基本特性五大基本原则

 一、三大基本特征:封装、继承、多态1、封装2、继承3、多态 二、五大基本原则1、单一职责原则(SRP)2、开放封闭原则(OCP)3、里氏替换原则(LSP)4、依赖倒置原则(DIP)5、接口隔离原则(ISP)     ...

邓高鹃的技术专栏 388

Java 面对对象三大特性、五大基本原则

三大特性: 封装 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。 java里的class 把属性和方法都封装起来,用访问修饰符来控制访问级别。 继承 在一个现有类的基础上,增加新的方法或重写已有的方法,从而产生一个信新类。 带来的好处实现对原有类的一个复用。 多态 同一个行为具有不同表现形式 编译时多态:重载 运行时多态:通过动态绑定技术来实现,只有程序运行起...

weixin_39590058的博客 134
上一篇: 深入了解String常量池
下一篇: 图形图像编码原理
DeepBlue_
博客等级 码龄6年 7粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值