设计模式是什么
设计模式是指在软件开发中,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方案。是通过满足设计原则后,慢慢迭代出来的。对于既有稳定点,又有变化点的问题才需要使用设计模式。我们希望修改少量的代码,就可以适应需求的变化。《Design Pattern》中打了一个比方,在一个整洁的房间,有一只好动的猫,如何保证房间的整洁?设计模式做的就是把猫关在笼子里这件事。
面向对象
封装、继承、多态
封装 隐藏实现细节,实现模块化
继承 无需修改原有类的情况下通过继承实现对功能的扩展
多态 静态多态(函数重载)动态多态(虚函数重写)
设计原则
开放 封闭 对扩展开放,对修改封闭(封装)
依赖倒置 高层不应该依赖底层,两者都应该依赖抽象;抽象不应该依赖具体,具体应该依赖抽象。
面向接口 面向接口编程,而不是面向具体。
封装变化点 把需求中变化的部分给封装起来(把猫关在笼子里)。
单一职责原则 一个类尽量就做一件事。
里氏替换 子类能够完全替换父类,做父类做的事情
接口隔离 使用多个互相没有关系的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。
组合优于继承 多用组合少用继承
最小知道原则 迪米特法则,不和陌生的类打交道。
设计模式
创建型模式(5)
工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式(7)
适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式(11)
策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式