💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Java面向对象(综合实战)   前言:学习完Java面向对象,所以对于不太了解的地方就得从实战一些小项目练习获得需要知道的东西,从这些练习中就能更加直观清晰的明白和使用。 ### 案例二:银行转账(OO实现) #### 1.1 需求分析 ​   银行转账业务操作步骤: >1. 查询对应账号是否存在-findAccountByName(); >2. 查询银行账号余额是否充足findAccountByMoney(); >3. 扣款--deduction >4. 汇款-remittance ​   完成思路分析: ​   以上为每个数据操作单位,但整体又是一个工作单位,为了满足整体的系统设计高聚合低耦合的设计思路,所以把整体业务定义为银行业务对象-AccountService接口(AccountServiceImpl对应实现类)汇款方法-remitMoney(),而在业务类依赖数据操作单位,我们在这里定义AccoutDao类,此类包上面操作单元 > 1、查询对应账号是否存在-findAccountByName(); > 2、查询银行账号余额是否充足findAccountByMoney(); > 3、扣款--deduction >4、汇款-remittance #### 1.2 代码实现 ​   根据以上整体需求分析,我们需要提供数据操作对象(AccountDao)和业务操作对象(AccountServiceImpl对象),而两者的关系是业务对象需要依赖数据操作对象,但值得注意的是业务日后需要提供对外的接口,所有业务接口的开发需要基于接口的开发,所以业务定义业务接口 (AccountService),代码如下: ​   银行数据操作对象(AccountDao)代码: ```java /** * AccountDao.java(银行数据操作类) * @author baishenghua * */ public class AccountDao { public void findAccountByName() { System.out.println("====执行查询对应账号是否存在==="); } public void findAccountByMoney() { System.out.println("====执行查询银行账号余额是否充足=="); } public void deduction() { System.out.println("====执行扣款操作==="); } public void remittance() { System.out.println("===执行汇款操作====="); } } ``` ​   银行业务接口(AccountService)代码: ```java package com.yiniuedu.cms.bank.dao.service; /** * AccountService.java(银行业务接口) * @author baishenghua * */ public interface AccountService { // 汇款 public void remitMoney(); } ``` ​   银行业务实现类(AccountServiceImpl)代码: ```java /** * AccountServiceImpl.java(业务实现类) * @author baishenghua */ public class AccountServiceImpl implements AccountService { private AccountDao accountDao; public AccountServiceImpl(AccountDao accountDao) { this.accountDao = accountDao; } public AccountDao getAccountDao() { return accountDao; } public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } @Override public void remitMoney() { // 1、查询对应账号是否存在-findAccountByName(); accountDao.findAccountByName(); // 2、查询银行账号余额是否充足findAccountByMoney(); accountDao.findAccountByMoney(); // 3、扣款--deduction accountDao.deduction(); // 4、汇款-remittance accountDao.remittance(); } } ``` ​   银行业务实现测试类(银行业务实现类)代码: ```java /** * AccountServiceTest(Account业务单元测试) * @author chong */ public class AccountServiceTest { public static void main(String[] args) { // 实例化数据库操作对象 AccountDao dao = new AccountDao(); // 实例化业务对象 AccountService accountService = new AccountServiceImpl(dao); // 调用业务方法 accountService.remitMoney(); } } ``` 总结: ​   遇到一个业务复杂的项目时,首先要做的就是分析,先分析各个类和接口之间的关系,然后设计,整理思路,例如要创建的包,包名,包里要放的东西,包之间的调用,类与类之间的继承,是否抽象,是否要实现接口,在做之前一定要分化清楚,然后再去实现。   至于还有一些经典例子和练习,也得靠自己去理解,所以慢慢来吧,把这些理解清楚了,对于后面的三层就应该更容易做了。