本文主要是介绍设计模式之美笔记——面向对象四大特性 之 封装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
设计模式之美-05
封装特性
封装也叫作信息隐藏或者数据访问保护。
类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。
这个类与后端物理存储并不必须一一对应,只是将物理存储中的数据根据需求进行透出和修改读取的控制。
它需要编程语言提供权限访问控制语法来支持,例如 Java 中的 private、protected、public 关键字。
封装特性存在的意义:
- 一方面是保护数据不被随意修改,提高代码的可维护性;
- 另一方面是仅暴露有限的必要接口,提高类的易用性。
public class Wallet {private String id;private long createTime;private BigDecimal balance;private long balanceLastModifiedTime;// ...省略其他属性...public Wallet() {this.id = IdGenerator.getInstance().generate();this.createTime = System.currentTimeMillis();this.balance = BigDecimal.ZERO;this.balanceLastModifiedTime = System.currentTimeMillis();}// 注意:下面对get方法做了代码折叠,是为了减少代码所占文章的篇幅public String getId() { return this.id; }public long getCreateTime() { return this.createTime; }public BigDecimal getBalance() { return this.balance; }public long getBalanceLastModifiedTime() { return this.balanceLastModifiedTime; }public void increaseBalance(BigDecimal increasedAmount) {if (increasedAmount.compareTo(BigDecimal.ZERO) < 0) {throw new InvalidAmountException("...");}this.balance.add(increasedAmount);this.balanceLastModifiedTime = System.currentTimeMillis();}public void decreaseBalance(BigDecimal decreasedAmount) {if (decreasedAmount.compareTo(BigDecimal.ZERO) < 0) {throw new InvalidAmountException("...");}if (decreasedAmount.compareTo(this.balance) > 0) {throw new InsufficientAmountException("...");}this.balance.subtract(decreasedAmount);this.balanceLastModifiedTime = System.currentTimeMillis();}
}
这篇关于设计模式之美笔记——面向对象四大特性 之 封装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!