单一职责原则和接口隔离的区分:
一卡双号和商城的登录、修改密码、登出功能都在统一的用户模块接口里声明,用户模块实现类实现接口的所有方法,符合单一职责原则,但是对商城用户和一卡双号用户各自而言,都不符合接口隔离原则,对一卡双号用户而言,不需要商城相关的功能。如果把用户模块接口拆分成商城用户模块接口和一卡双号用户模块接口,实现类同时实现两个接口,就符合接口隔离原则。
里氏替换原则是开闭原则的一种解决方案:
里氏替换原则指的是子类替换父类,不影响业务逻辑,即子类不能重写父类的方法,可以在包含父类所有方法的基础上,增加新的方法。完全符合开闭原则的思想,对扩展开放,对修改关闭。
依赖倒置原则是实现开闭原则的重要途径:
依赖倒置的思想其实就是指,高层的模块类中的方法,不能直接用低层模块类作为参数,而是用低层模块类的接口或者抽象类作为参数。以接口或抽象类作为参数声明不允许修改,子类做为实际参数可以替换或扩展,完全符合开闭原则思想。同时高层模块的该方法也是在接口或者抽象类中声明。实际就是利用JAVA的多态性降低代码的耦合,提高代码的内聚。例子如图:


我们先要写出低耦合高内聚的代码,在java中需要遵循如下原则:
1. 模块间的依赖通过抽象类或接口发生,实现类之间的依赖关系也是通过抽象类或接口产生(实现类之间不应发生直接的依赖关系),降低系统的耦合性
2. 接口或抽象不依赖于实现类,但实现类依赖接口或抽象类,实现类对系统需要的功能具体实现,提高类的内聚程度