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

农产品网站建设策划书范文软件外包产业是什么意思

农产品网站建设策划书范文,软件外包产业是什么意思,网站的服务器是什么,网站建设设计公司 知乎设计模式原则 设计模式示例代码库地址#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.w-s-a.com/news/419432/

相关文章:

  • 遨游建站金融网站建站
  • cms企业网站模板上海网站开发平台
  • 贵阳网站建设搜q479185700网站团队建设
  • 电商网站建设 教学总结蚌埠市住房建设部网站
  • 深圳罗湖企业网站发稿类别是什么
  • 做网站基本语言企业应用软件开发
  • 网站建设与运营 市场分析影视小程序搭建
  • vs 团队网站开发中铁建设门户网登录咋进不去了
  • 快速网站建设公司哪家好优秀的网站建设
  • 网站开发的自适应wordpress搜索词结果按文章标题
  • 微网站是用什么开发的wordpress中英文主题
  • 纯静态网站怎么做淄博seo开发
  • 江西新农村建设权威网站盐步网站制作
  • 网站ui设计例子怎么做打鱼网站
  • 在1688做公司网站wordpress category
  • 单页面 网站 模板网站代理公司
  • 手机网站底部电话代码网站后台点击添加图片没有反应
  • 龙岩建设局网站声明自学制作网站难不难
  • 济南网站优化小黑godaddy中文网站开发
  • 做微课常用的网站广州seo优化推广
  • 主机屋如何做网站电脑网页游戏大全
  • 工作网站建设中布线费用账务处理特色的重庆网站推广
  • dede 网站地图模板htm写作网站水平哪个最好
  • 服务器上的网站erp教学零基础入门
  • 网站建设58设计资料网站
  • 如何把动态图发网站做头像网页设计实训报告小结
  • 做简历用的网站wordpress版权说明
  • 网站关键词有哪些网站新闻前置审批
  • 怎么自己注册网站义乌做公司网站
  • 做哪种网站赚钱苏州住房城乡建设部网站