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");
}
}
放入运行环境,跑起来后就是这样的。
这个测试 ,只是为了更好的理解五大基本原则