设计模式-七大原则

看B站视频做的笔记

程序有 耦合性 内聚性 以及可维护性 重用性 灵活性的问题
设计模式可以让程序有更加好的
1. 代码重用性
2. 可读性
3. 可扩展性
4. 可靠性(增加新的模块功能后 对之前的功能没有影响)
5. 让程序呈现 高内聚 低耦合的特性

设计模式的原则就是程序员在编程时候 要遵循的规则
七大原则

1. 单一职责原则
2. 接口隔离原则
3. 倒置原则
4. 里氏替换原则
5. 开闭原则
6. 迪米特原则
7. 合成复用原则

单一职责原则

注意事项
1 降低了类的复杂度 一个类只负责一项职责
2 提高了类的可读性 可维护性
3 降低了变更引起的风险
4 在逻辑足够简单的情况下 才可以违背代码的单一职责原则 在类中的方法很少 的情况下 才可以在方法级别保持单一职责原则
接口隔离原则
客户端不应该依赖它不需要的接口 (一个类对另一个类的依赖 要建立在最小的接口上面)
通过拆分接口

接口隔离原则

客户端不应该依赖它不需要的接口
(一个类对另一个类的依赖 要建立在最小的接口上面)通过拆分接口
它还有另外一个意思是:降低类之间的耦合度。

依赖倒转原则

      i.  高层模块不依赖低层的模块  二者都要其抽象
      ii.  抽象不应该依赖于细节  细节要依赖抽象
      iii.  倒置原则的中心是面向接口编程

      iv. 倒置原则是基于这样的设计理念:
	相对于细节的多变性 抽象的东西要稳定的多 以抽象为基础搭建的架构要 
	比细节为基础稳定的多 

      v. 使用接口或者抽象类的目的是规定好规范 而不涉及任何的具体
      类 把展现细节的认为交给他们的实现类去完成
package com.设计模式;
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());
    }
}

class Email{
    public String getInfo(){
        return "hello"; }
}

class Person{
    public void receive(Email email){
        System.out.println(receiver.getInfo());
    }
}

在person里面的receive 的方法里面直接是具体类 (简单 但是 如果获取的对象还有qq 微信 短信 等 同时就要增加相应的方法)

解决的方法 引入一个抽象的接口类(IReceiver) 这样Person于IReceiver 接口 就产生依赖

public interface IReceiver {
    public  String getInfo();
}

package com.设计模式;
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());
    }
}

class Email implements IReceiver{
    public String getInfo(){
        return "hello"; }
}
class  weixin implements  IReceiver{

    public String getInfo() {
        return  "weixin hello";
    }
}
class Person{
    public void receive(IReceiver receiver){
        System.out.println(receiver.getInfo());
    }
}

低层模块尽量要有抽象类或者接口 或者都有 这样程序的稳定性会变好
变量的声明尽量要有抽象类或者接口 这样我们的变量引用和实际的对象对象间 就有一个人缓冲区 有利于程序的扩展和优化

里氏替换原则

引用基类的地方必须要透明的使用其他子类的对象
尽量不要重写父类的方法
继承让两个类之间的偶遇性变强了 在设当的情况下 可以通过聚合 组合 依赖来解决问题

开闭原则

1 模块和函数要对扩展开放(对提供方) 对修改关闭(对使用方) 用抽象构建框架 用实现扩展细节
2 软件需要变化的时候 尽量扩展软件实体的行为来实现变化 而不是修改已有的代码来实现

迪米特法则(最少知道法则)

降低类之间的耦合
1 一个对象应该与其他对象保持最少的了解
2 类与类之间关系越密切 耦合度越大
3 一个类对自己依赖的类知道的越少越好 对于被依赖的类无论多么复杂 都应该尽量把他封装在内部 对外除了public 方法 不泄露 其他的信息
4 只和直接的朋友通信
直接的朋友: 只要两个对象之间有耦合关系 这两个对象 就是朋友关系
耦合的方式有 依赖 关联 组合 聚合 等 其中出现成员变量 方法参数 方法返回值中的类为直接的朋友 (陌生的类最好不要以局部变量的形式出现在类的内部)

合成复用原则

原则就是尽量的使用合成与聚合的方式 而不是继承
针对接口编程 而不是针对实现编程
为了交互对象之间的松耦合设计而努力-

你可能感兴趣的:(设计模式)