单一职责原理(SRP)

应该有且只有一个原因引起类的变更。

对于一个User类,应将用户的信息抽取成一个BO(Bussiness Object 业务对象)和一个Biz(Bussiness Logic 业务逻辑),如IUserBO和IUserBiz接口,IUserBO负责收集和反馈用户的属性信息,IUserBiz负责用户信息的维护和变更。

1
2
3
4
5
IUserInfo userinfo = new UserInfo();
IUserBo userBo = (IUserBO)userinfo;
userBo.setName("xiaowang"):
IUerBiz userBiz = (IUserBiz)userinfo;
userBiz.deleteUser();

应保证接口做到单一职责,类的设计尽量保证较少的职责。

里氏替换原则(LSP)

所有引用基类的的地方必须能透明地使用子类的对象。(即父类能出现的地方子类都能出现)

避免子类的个性,防止业务的混乱。

依赖倒置原则(DIP)

  • 高层模块不应依赖于低层模块,两者都应该依赖其抽象(模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系)
  • 抽象不应依赖于抽象细节(接口不应依赖于实现)
  • 细节应该依赖抽象

减少代码及模块间的耦合,提高了系统的稳定性。这个原则真是感觉棒棒哒!

接口隔离原则

  • 接口须细化,客户端不应该依赖它不需要的接口
  • 类间的依赖应该建立在最小的接口上

迪米特法则(LoD)

一个对象应该对其它对象有最少的了解。其核心观念即类间解耦,弱耦合

开闭原则

一个软件实体(模块,类,方法)应该通过扩展实现自身变化,而不是通过修改已有的代码

提高复用性和可维护性