成都模板网站建设服务,天津网站制作的公司,wordpress 运行好慢,微商货源网下载***************基础介绍*************** 1、单一职责原则 2、里氏替换原则 3、依赖倒置原则 4、接口隔离原则 5、迪米特法原则 6、开闭原则 一、单一职责原则
举例#xff1a;类T负责两个不同的职责#xff1a;职责P1#xff0c;职责P2。当由于职责P1需求发生改变而需要修…***************基础介绍*************** 1、单一职责原则 2、里氏替换原则 3、依赖倒置原则 4、接口隔离原则 5、迪米特法原则 6、开闭原则 一、单一职责原则
举例类T负责两个不同的职责职责P1职责P2。当由于职责P1需求发生改变而需要修改类T时有可能会导致原本运行正常的职责P2功能发生故障。
总结一个类只负责一件事
1、情况 这里我们封装了一个动物类写上两个方法呼吸和行为。 运行方法 这里我们构造函数传入“鱼”的话这样就不符合逻辑了 2、简单案例 我们把Animal类抽象为父类然后把鸟、鱼等动物作为子类去继承Animal。每个动物类内去重写各自的方法。互不影响。这就是单一职责原则 3、优点 一个类只负责一件事拆分之后职责变得单一。 阅读简单易于维护。 扩展升级减少修改直接增加类。 方便代码重用。 4、缺点 类变多了上端需要了解更多的类 5、使用时机 衡量着使用如果类相对稳定拓展变化少而且逻辑简单违背单一职责也没关系。 一个类不要让它太冗长 如果不同的职责总是一起变化的这种是一定要分开的。 6、举例 方法方法多个分支还可能拓展变化最好分开多个方法 类接收输入——数据验证——逻辑计算——数据库操作——日志方便维护升级 接口也会把不同的功能接口独立开来 类库把项目拆分多个类库重用——方便维护 项目一个Web解决所有问题客户端管理后台定时服务远程接口 二、里氏替换原则
基本任何使用基类的地方都可以透明的使用其子类
继承、多态 继承通过继承子类拥有父类的一切属性和行为任何父类出现的地方都可以用子类来代替
1、子类必须完全实现父类的方法如果子类没有父类的某项东西就断掉继承
2、子类可以有父类没有的东西所以子类出现的地方不一定能用父类来代替
3、透明安全父类的东西换成子类后不影响程序。
4、尽量不要new父类写完的方法最好选择使用virtual和override的方式避免埋雷 声明变量、参数、属性、字段最好都是基于基类的。 小题目抽象类的父类有三个方法Test01是普通方法Test02是虚方法Test03是抽象方法。子类继承了父类重写了这3个方法。在实例化了子类后调用三个方法调用的会是谁的方法 答案是父类、子类、子类 1、普通方法由左边决定编译时决定 2、虚方法和抽象方法由右边决定运行时决定 三、迪米特法则最少知道原则
基础
1、一个对象应该对其他对象保持最少的了解。
2、面向对象——类——类与类之间会有交互——功能模块——系统
3、高内聚低耦合。高度封装类与类之间减少依赖
耦合关系依赖、关联、组合、聚合 继承、实现接口。
4、只与直接的朋友通信
5、去掉内部依赖——降低访问修饰符 举例我们有三个类分别是学校类School、课室类Class和学生类Student课室中有学生学生和学校没有直接联系则学生是学校的依赖间接关系 学校的管理方式 1、学校让班级自己去管理学生符合迪米特法则 2、学校直接管理所有学生不符合迪米特法则 参考示例 四、依赖倒置原则
1、基础上层模块应该依赖于底层模块二者应该通过抽象依赖 依赖抽象而不是依赖细节 小案例我有一个手机基类子类分别有IPhone类和HuaWei类还有一个Student学生类学生类可以玩IPhone和HuaWei手机因此我们写了两个方法可以传入两种手机的参数。但是如果我们希望后续给学生拓展更多的手机那我们就要写更多的方法 这种其实在方法里直接传入手机子类其实算是依赖细节。 其实我们可以写一个方法参数为手机基类依赖抽象 1、依赖抽象更具有通用性而且具备拓展性。 2、细节是多变的抽象是稳定的系统架构基于抽象来搭建会更加具备拓展性 3、面向抽象编程底层模块里面尽量都有抽象类/接口 4、在声明参数/变量/属性的时候尽量都是 接口/抽象类 五、接口隔离原则
1、基础客户端不应该依赖它不需要的接口 一个类对另一个类的依赖应该建立在最小的接口上 实现一个接口的时候只需要自己必须的功能 小案例还是用上边手机的案例我们刚刚通过抽象类来描述我们的手机那对于我们手机的功能我们可以使用接口抽象类主要用于是什么接口主要用于干什么。 这里我写了一个接口只需要继承这个接口我们的手机就有打电话、上网、玩游戏等功能。但假如有一天我们需要假如一台老人机而老人机并没有上网、玩游戏等功能而我们这个接口就必须实现接口内的所有方法这时候就不太合适了。最好的方法是把接口隔离开比如所有手机都可以打电话发短信那么打电话和发短信就可以单独写一个接口其他智能机才有的功能另外写一个接口。我们需要用什么接口就继承什么接口即可。 六、开闭原则
1、基础1、对拓展开发对修改关闭 2、如果有功能拓展变化的需求希望是增加类而不是修改。 3、修改会影响原有功能引入错误 4、增加类就不会影响原有的东西 5、原则的原则五大原则是手段开闭原则是目标