设计原则
1.单一职责原则
/// <summary> /// 一个类只负责一件事 /// 扩展升级,减少修改,直接增加类 /// 方便代码重用 /// 简单-稳定-强大 /// /// 方法层面:方法多个分支,还可能扩展变化,最后拆分成多个方法 /// 类:接受输入--数据验证--逻辑计算--数据库操作--日志 /// 接口:也会把不同的功能接口,独立开来 /// 类库:把项目分成多个类库,重用-方便维护
2.里氏替换原则:任何使用基类的地方,都可以透明的使用子类
透明:就是安全,父类的东西换成子类后不影响程序,基于里氏替换原则,写程序有以下的建议
a.父类已经实现的东西,子类不要去new 去隐藏
b.父类已经实现的东西,想改的化,就必须用virtual + override 避免埋雷
声明变量、参数、属性、字段最好都是基于基类的
ParentClass instance = new ChildClass(); instance.CommonMethod(); //普通方法由左边决定,编译时决定(执行父类的方法) instance.VirtualMethod(); //虚方法由右边决定,运行时决定(执行子类的方法) instance.AbstraceMethod()//抽象方法由右边决定,运行时决定(执行子类的方法)
3.迪米特法则(最少知道原则):一个对象应该对其他对象保持最少的了解
/// 高内聚,低耦合:高度封装,类与类之间减少依赖
/// 只对直接对象进行关联,不对间接对象进行关联;针对字段,使用private/protect修饰符,也是为了减少其他对象的对自己的了解
/// 门面(外观)模式 /中介者模式
class School { public int Id { get; set; } public string SchoolName { get; set; } public List<Class> ClassList { get; set; } public void Manage() { foreach (var c in ClassList) { c.Manage();//遵循了迪米特法则 List<Student> studentList = c.StudentList;//违反了迪米特法则 } } }
4.依赖倒置原则:高层模块不应该依赖于底层模块,二者应该通过抽象实现
/// 依赖抽象,更具有通用性,而且具备扩展性;
///
/// 面向抽象编程,底层模块里面尽量都有抽象类/接口。
5.接口隔离原则:
/// 接口隔离原则:客户端不应该依赖它不需要的接口;
/// 一个类对另一个类的依赖应该建立在最小的接口上
/// 实现一个接口的时候,只需要自己必须的功能
///
/// 接口不能太大,否则会实现不需要的功能
/// 接口还是要尽量的小,但是一致的功能时应该要放在一起的
/// 接口合并:如果一个业务多个固定步骤,我们不应该把步骤都暴漏,而是提供一个入口即可
Net框架中有时候明明看到了已经继承了某个接口,却找不到实现在哪里(实现在了父类中)
6.开闭原则:对扩展开放,对修改关闭

浙公网安备 33010602011771号