Java五大基本原则

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");
	}
}

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值