当前位置: 首页 > news >正文

ui做的好的公司网站名师工作室建设网站

ui做的好的公司网站,名师工作室建设网站,wordpress女生主题,志愿北京网站注册设计模式原则 设计模式示例代码库地址#xff1a; https://gitee.com/Jasonpupil/designPatterns 里氏替换原则 继承必须确保父类所拥有的性质在子类中依然成立 与开闭原则不同的是开闭原则可以改变父类原有的功能#xff0c;里氏替换原则不能修改父类的原有的性质#…设计模式原则 设计模式示例代码库地址 https://gitee.com/Jasonpupil/designPatterns 里氏替换原则 继承必须确保父类所拥有的性质在子类中依然成立 与开闭原则不同的是开闭原则可以改变父类原有的功能里氏替换原则不能修改父类的原有的性质即使子类扩展了父类的功能也不能改变父类的原有功能 提高兼容性、维护性和扩展性 子类和父类的接口保持一致确保在任何使用父类的地方都可以替换为子类而不会影响系统功能子类能够无缝地替换父类替换时不需要修改客户端代码方便地扩展新功能而不需要对现有代码进行大规模修改由于子类完全遵循父类的契约系统在替换子类时不容易出现未预见的运行时错误 使用场景银行卡存储 信用卡继承并重写储蓄卡的功能破坏了里氏替换原则根据里氏替换原则进行修改 里氏替换原则替换前示例代码 储蓄卡类 /*** Description: 模拟储蓄卡功能* Author: pupil* Date: 2024/06/23 下午 10:04*/ public class CashCard {private Logger logger LoggerFactory.getLogger(CashCard.class);private static ListString tradeList new ArrayList();/*** 提现** param orderId 单号* param amount 金额* return 状态码 0000成功、0001失败、0002重复*/public String withdrawal(String orderId, BigDecimal amount) {// 模拟支付成功logger.info(提现成功单号{} 金额{}, orderId, amount);return 0000;}/*** 储蓄** param orderId 单号* param amount 金额* return 状态码 0000成功、0001失败、0002重复*/public String recharge(String orderId, BigDecimal amount) {// 模拟充值成功logger.info(储蓄成功单号{} 金额{}, orderId, amount);return 0000;}/*** 交易流水查询** return 交易流水*/public ListString tradeFlow() {logger.info(交易流水查询成功);tradeList.add(14451,100.00);tradeList.add(14451,65.00);tradeList.add(14451,76.50);tradeList.add(14451,126.00);return tradeList;} }信用卡类 /*** Description: 模拟信用卡功能重写父类的方法违法里氏替换原则* Author: pupil* Date: 2024/06/23 下午 10:32*/public class CreditCard extends CashCard{private Logger logger LoggerFactory.getLogger(CashCard.class);/*** param orderId 单号* param amount 金额* return 状态码 0000成功、0001失败、0002重复*/Overridepublic String withdrawal(String orderId, BigDecimal amount) {// 校验if (amount.compareTo(new BigDecimal(1000)) 0){logger.info(贷款金额校验(限额1000元)单号{} 金额{}, orderId, amount);return 0001;}// 模拟生成贷款单logger.info(生成贷款单单号{} 金额{}, orderId, amount);// 模拟支付成功logger.info(贷款成功单号{} 金额{}, orderId, amount);return 0000;}/**** param orderId 单号* param amount 金额* return 状态码 0000成功、0001失败、0002重复*/Overridepublic String recharge(String orderId, BigDecimal amount) {// 模拟生成还款单logger.info(生成还款单单号{} 金额{}, orderId, amount);// 模拟还款成功logger.info(还款成功单号{} 金额{}, orderId, amount);return 0000;}Overridepublic ListString tradeFlow() {return super.tradeFlow();}}测试类 /*** Description: 验证测试* Author: pupil* Date: 2024/06/23 下午 10:33*/public class ApiTest {private Logger logger LoggerFactory.getLogger(ApiTest.class);Testpublic void test_CashCard() {CashCard cashCard new CashCard();// 提现cashCard.withdrawal(14451, new BigDecimal(100));// 储蓄cashCard.recharge(14451, new BigDecimal(100));// 交易流水ListString tradeFlow cashCard.tradeFlow();logger.info(查询交易流水{}, JSON.toJSONString(tradeFlow));}Testpublic void test_CreditCard() {CreditCard creditCard new CreditCard();// 支付creditCard.withdrawal(14451, new BigDecimal(100));// 还款creditCard.recharge(14451, new BigDecimal(100));// 交易流水ListString tradeFlow creditCard.tradeFlow();logger.info(查询交易流水{}, JSON.toJSONString(tradeFlow));}}结果 里氏替换原则替换后示例代码 银行卡类 /** * Description: 银行卡 * Author: pupil * Date: 2024/06/23 下午 10:46 */ public abstract class BankCard {private Logger logger LoggerFactory.getLogger(BankCard.class);private static ListString tradeList new ArrayListString();private String cardId; // 卡号private String cardDate; // 开卡时间public BankCard(String cardId, String cardDate) {this.cardId cardId;this.cardDate cardDate;}abstract boolean rule(BigDecimal amount);/*** 正向入账 钱* param orderId 单号* param amount 金额* return 状态码 0000成功、0001失败、0002重复*/public String positive(String orderId, BigDecimal amount) {// 入款成功存款、还款logger.info(卡号{} 入款成功单号{} 金额{}, cardId, orderId, amount);return 0000;}/*** 逆向入账- 钱* param orderId* param amount* return 状态码 0000成功、0001失败、0002重复*/public String negative(String orderId, BigDecimal amount) {// 入款成功存款、还款logger.info(卡号{} 出款成功单号{} 金额{}, cardId, orderId, amount);return 0000;}/*** 交易流水查询** return 交易流水*/public ListString tradeFlow() {logger.info(交易流水查询成功);tradeList.add(14451,100.00);tradeList.add(14451,80.00);tradeList.add(14451,76.50);tradeList.add(14451,126.00);return tradeList;}public String getCardId() {return cardId;}public String getCardDate() {return cardDate;} }/** * Description: 模拟储蓄卡功能 * Author: pupil * Date: 2024/06/23 下午 10:04 */ public class CashCard extends BankCard {private Logger logger LoggerFactory.getLogger(CashCard.class);public CashCard(String cardNo, String cardDate) {super(cardNo, cardDate);}boolean rule(BigDecimal amount) {return true;}/*** 提现** param orderId 单号* param amount 金额* return 状态码 0000成功、0001失败、0002重复*/public String withdrawal(String orderId, BigDecimal amount) {// 模拟支付成功logger.info(提现成功单号{} 金额{}, orderId, amount);return super.negative(orderId, amount);}/*** 储蓄** param orderId 单号* param amount 金额*/public String recharge(String orderId, BigDecimal amount) {// 模拟充值成功logger.info(储蓄成功单号{} 金额{}, orderId, amount);return super.positive(orderId, amount);}} 信用卡类 /** * Description: 模拟信用卡功能重写父类的方法违法里氏替换原则 * Author: pupil * Date: 2024/06/23 下午 10:32 */ public class CreditCard extends CashCard{private Logger logger LoggerFactory.getLogger(CashCard.class);public CreditCard(String cardNo, String cardDate) {super(cardNo, cardDate);}/*** 金额规则* 根据里氏替换原则不能重写父类的rule方法所以新构建一个方法* param amount* return*/boolean rule2(BigDecimal amount) {return amount.compareTo(new BigDecimal(1000)) 0;}/*** 提现信用卡贷款** param orderId 单号* param amount 金额* return 状态码 0000成功、0001失败、0002重复*/public String loan(String orderId, BigDecimal amount) {boolean rule rule2(amount);if (!rule) {logger.info(生成贷款单失败金额超限。单号{} 金额{}, orderId, amount);return 0001;}// 模拟生成贷款单logger.info(生成贷款单单号{} 金额{}, orderId, amount);// 模拟支付成功logger.info(贷款成功单号{} 金额{}, orderId, amount);return super.negative(orderId, amount);}/*** 还款信用卡还款** param orderId 单号* param amount 金额* return 状态码 0000成功、0001失败、0002重复*/public String repayment(String orderId, BigDecimal amount) {// 模拟生成还款单logger.info(生成还款单单号{} 金额{}, orderId, amount);// 模拟还款成功logger.info(还款成功单号{} 金额{}, orderId, amount);return super.positive(orderId, amount);} }测试类 /** * Description: 测试验证 * Author: pupil * Date: 2024/06/23 下午 10:51 */ public class ApiTest {private Logger logger LoggerFactory.getLogger(ApiTest.class);Testpublic void test_bankCard() {logger.info(里氏替换前CashCard类);CashCard bankCard new CashCard(800999898, 2024-06-23);// 提现bankCard.withdrawal(14451, new BigDecimal(100));// 储蓄bankCard.recharge(14451, new BigDecimal(100));logger.info(里氏替换后CreditCard类);CashCard creditCard new CreditCard(800999898, 2024-06-23);// 提现creditCard.withdrawal(14451, new BigDecimal(1000000));// 储蓄creditCard.recharge(14451, new BigDecimal(100));// 交易流水ListString tradeFlow bankCard.tradeFlow();logger.info(查询交易流水{}, JSON.toJSONString(tradeFlow));}Testpublic void test_CreditCard(){CreditCard creditCard new CreditCard(800999898, 2024-06-23);// 支付贷款creditCard.loan(14451, new BigDecimal(100));// 还款creditCard.repayment(14451, new BigDecimal(100));// 交易流水ListString tradeFlow creditCard.tradeFlow();logger.info(查询交易流水{}, JSON.toJSONString(tradeFlow));} }结果 根据里氏替换原则的示例类图 银行卡和储蓄卡是泛化关系储蓄卡继承于银行卡 储蓄卡和信用卡是泛化关系信用卡继承于储蓄卡
http://www.ho-use.cn/article/10823459.html

相关文章:

  • 商城网站免费模板加速网页的加速器
  • 做公司网站详细步骤河北建设工程信息网已取消
  • 网站切图怎么收费网站推广的作用是什么
  • 网站源码路径wordpress学校模板下载
  • 购买网站空间ftp设计域名三天更换一次
  • 清苑区建设网站找那家公司本地wordpress 上传
  • 专门做搞笑游戏视频网站宁波微信推广平台哪个好
  • 帮人做非法网站吗做资源网站盈利点
  • 网站服务器租用怎么做单页竞价网站
  • 网站制作易捷网络品牌建设工作经验
  • word超链接网站怎样做做衣服外单网站有哪些
  • 花都营销型网站网站绝对布局
  • 义乌网络公司排名襄樊seo快速排名
  • 百度是什么网站设计logo的手机软件免费
  • 校园服装网站建设预算东莞网页制作费用大概多少
  • cms建站程序哪个好酒店旅游团购网站建设
  • 广州专业网站设计公司网站注册搜索引擎的目的
  • p2p网站建设多少钱科技有限公司属于什么行业
  • 保定清苑住房和城乡建设局网站云服务器如何搭建
  • 重庆无障碍网站建设建筑工程造价信息网
  • 建设部网站上怎样查询企业业绩瓷砖网络推广培训
  • 第三方做网站泰安人才网最新招聘信息网
  • 株洲市荷塘区城乡建设局网站网站的程序和数据库怎么做
  • 北京做电子系统网站的公司网站怎么宣传
  • 外贸网站建设外wordpress主题换图片不显示
  • 门户网站包括哪些新版wordpress头像
  • 企业网站建设的背景页面设计要以什么为导向
  • 九江专业制作网站小程序旅游网站模块分类
  • 网站开发设计技术uo建设网站
  • 正能量网站建设wordpress wpsyntax