//设计模式帮助我们实现可复用的组件,所谓"可复用",就是指将类实现为"组件",当一个组件发生改变时,不需要对其他组件进行修改或是只需要很小的修改即可应付。
//设计模式分为三大类:
//创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
//结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
//行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
//设计模式的六大原则:
//总原则-开闭原则
//对扩展开放,对修改封闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。
//1)单一职责原则
//不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,否则就应该把类拆分。
//2)里氏替换原则
//无论在父类类型的变量中保存哪个子类的实例,程序都可以正常工作,这种原则被称为里氏替换原则。里氏替换原则是继承复用的基石,只有当子类可以替换基类,软件单位的功能不受到影响时,基类才能真正被复用。
//3)依赖倒转原则
//面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而与具体类上层的抽象接口交互,优先使用抽象类和接口来编程。
//4)接口隔离原则
//接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。
//5)迪米特法则
//一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。
//6)合成复用原则
//尽量优先使用组合或聚合的方式,而不是使用继承。
//学习某种设计模式要从"角色"的角度来理解各个类和接口在模式中扮演什么样的角色,思考和理解这些"角色"的交互可以解决哪些问题,不要只是阅读书中的案例死记硬背。