设计模式===>之七大设计原则==超详细

一:设计模式的重要性或者目的

写代码就好比盖楼,要想盖的高,.基础设计必须要优秀,就像是摩天大楼与茅草屋的区别;
那么代码为什么需要设计模式呢,因为代码并不是一次性的产物,一套代码写出来,可能会面临后期功能的扩展,代码性能的臃肿,所以,为了代码具有:

  1. 良好的扩展性,
  2. 以及复用性,(相同功能的代码,不用多次编写)
  3. 可读性(编程的规范性)
  4. 灵活性,
  5. 可靠性(当我们增加新的功能后,对原有的功能没有影响)
  6. 使代码呈现高内聚,低耦合的特性
    就要用到设计模式.

二:设计模式设计的七大原则:

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

**

懂得了设计模式就懂得了面向对象分析和设计(OOA/D)的精要.

**

三,解析:

  1. 单一职责原则: 各行其职
    基本介绍:
    对类来说,即一个类只能负责一项职责,如果类A负责两个不同的职责,职责1,职责2,当职责1需求变更而改变A的时候,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2.

比如:一个Dao只能负责一个表的增删改查,如果负责两个表的增删改差就会违反单一职责原则.

案例解析:
交通工具:
方案一


public class designMode1 {

    public static void main(String[] args) {
        Vehicle vehicle = new Vehicle();
        vehicle.run("c900摩托车");
        vehicle.run("喷气私人飞机");
        vehicle.run("喷气私人飞机");
    }
}
/**
 *交通工具类
 * 方式一:在方式一的run方法中,违反了单一职责原则,一个类被多次复用,改一个类就会影响多处代码
 * 修改方案1:根据交通工具的运行方式不同,拆分为不同的类,
 */
class Vehicle {
    public void run(String vehicle){
        System.out.println(vehicle+"在公路上跑...");
    }
}

方案二:

/*方拾二*/
public class designMode2 {

    //客户端
    public static void main(String[] args) {
        Vehicle1 vehicle1 = new Vehicle1();
        Vehicle2 vehicle2 = new Vehicle2();
        Vehicle3 vehicle3 = new Vehicle3();
        vehicle1.run("c900摩托车");
        vehicle2.run("喷气私人飞机");
        vehicle3.run("喷气私人飞机");
    }
}

/**
 * 交通工具类
 * 方式二:在方式二中遵守了单一职责原则,但是这样代码会臃肿,改变了类,又要改变客户端
 * 修改方案3:直接修改原先的类,这样修改的代码比较少,
 */
class Vehicle1 {
    public void run(String vehicle) {
        System.out.println(vehicle + "在公路上跑...");
    }

}
class Vehicle2 {
    public void run(String vehicle) {
        System.out.println(vehicle + "在天上飞..");
    }

}
class Vehicle3 {
    public void run(String vehicle) {
        System.out.println(vehicle + "在海里游...");
    }
}

方案三:

public class designMode3 {

    public static void main(String[] args) {
        Vehicle4 vehicle = new Vehicle4();
        vehicle.run("c900摩托车");
        vehicle.runAir("喷气私人飞机");
        vehicle.runWater("喷气私人飞机");
    }
}
***最优方式:***
    /**
     * 交通工具类
     * 方式三:这种修改方式没有对原来的类做大的修改,只是增加方法
     * 这种方式虽然没有在类这个级别上遵守,单一职责原则,但是在方法级别遵守了这个原则
     */
    class Vehicle4 {
        public void run(String vehicle) {
            System.out.println(vehicle + "在公路上跑...");
        }
        public void runAir(String vehicle) {
            System.out.println(vehicle + "在天上飞...");
        }
        public void runWater(String vehicle) {
            System.out.println(vehicle + "在海里游...");
        }
    }

单一职责原则注意事项和细节:

  1. 降低类的复杂度,一个类只负责一项职责
  2. 提高代码的可读性,可维护性
  3. 降低变更引起的风险
  4. 通常情况下,我们应当遵守单一职责原则,只有逻辑足够简单,才可以在代码级别违反单一职责原则;只有类中方法数量足够少,才可以在方法级别保持单一职责原则.

二: 接口隔离原则

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值