设计原则

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.开闭原则:对扩展开放,对修改关闭

posted @ 2024-08-24 00:48  你好呀嗯嗯  阅读(33)  评论(0)    收藏  举报