Design-》Architect
- SRP 单一职责原则
类、方法只干一件事。
- OCP 开放封闭原则
一个类应该对扩展开放,对修改关闭:
如果你需要一些额外功能,你应该扩展这个类而不是修改它,如果你需要一些额外功能,你应该扩展这个类而不是修改它。
- LSP 里氏替换原则
父类最好为抽象类
子类可实现父类的非抽象方法,尽量不要覆盖重写已实现的方法
子类可写自身的方法,有自身的特性,在父类的基础上扩建
子类覆盖重写父类方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松,后置条件(返回值)要更严格
- ISP 接口隔离原则
一个接口应该拥有尽可能少的行为,它是精简的,也是单一的
客户端不应该依赖它所不需要的接口
- DIP 依赖倒置原则
高级模块不应该依赖低级模块,两者都应该依赖抽象
抽象不应该依赖于细节,细节应该依赖于抽象
public class UserManager//高层模块
{
//我们会在一个类(高层模块)的内部实例化它依赖的对象(低层模块),
//这样势必造成两者的紧耦合,任何依赖对象的改变都将引起类的改变。
public void ChangePassword(string username,string oldpwd,string newpwd)
{
EmailNotifier notifier = new EmailNotifier();//低层模块
//add some logic and change password
//Notify the user
notifier.Notify("Password was changed on "+DateTime.Now);
}
}
我们经常说的“高内聚 松耦合”究竟什么是高内聚,什么是松耦合?
-
高内聚:相近功能放在同一类中,相近功能往往会被同时修改,放到同一个类中在修改时,代码更易维护(指导类本身的设计)
-
松耦合:类与类之间的依赖关系简单清晰,一个类的代码改动不会或者很少导致依赖类的代码修改(指导类间依赖关系设计)
网友评论