
设计模式是前人通过不断实践总结出来的经验。在日常编码也时有用到,更多的体现是在各大框架设计里面。之前自己学习过,但没有通过自己总结出来,接下来,我将系统的总结设计模式,加深自己对设计模式的理解
设计模式
分类
一、创建型模式:
1.工厂模式2.抽象工厂模式3.单例模式4.建造者模式5.原型模式
二、结构型模式
1.适配器模式2.桥接模式3.过滤器模式4.代理模式5.组合模式6.装饰器模式7.外观模式8.享元模式
三、行为型模式
1.责任链模式2.命令模式3.解释器模式4.迭代器模式5.备忘录模式6.中介者模式7.观察者模式8.状态模式9.空对象模式10.策略模式11.模板方法模式12.访问者模式
六大原则
一、单一职责原则
每个类的职责应该是单一的,不能让一个类负责做个业务。
比如说:一个类负责职责A和职责B,当职责A的需求变更时,需要修改职责A的代码,可能会导致职责B的代码出现问题为了避免出现这样的问题,所以要一个类对应一个职责
二、开闭原则
对扩展开放,对修改关闭
比如说:一个创建水果的类,本来可以创建香蕉、西瓜两个水果。如果这个类要新加创建芒果的方法,就得对这个类进行修改,如果再加其他水果,又得对该类进行方法的新增。所以可以对香蕉、西瓜等水果进行抽象,创建水果的类只提供创建方法,要新加芒果时,只需要扩展一个芒果类即可,不需要对创建水果类进行修改。开闭原则的关键就在于抽象二字
三、里氏代换原则
任何基类出现的地方,其子类也可以出现,替代其使用不会是出现错误
换种方式说就是,我喜欢狗,所以我一定喜欢动物;但我喜欢动物,我不一定喜欢狗。里氏代换原则其实是对开闭原则的补充也就是抽象的具体实现,而实现需要注意的也就是抽象时需要注意的情况:
1. 子类必须实现父类的抽象方法,不能实现非抽象方法
2. 子类可以增加自己的方法
四、依赖倒置原则
抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程
五、接口隔离原则
使用多个专门的接口,而不使用单一的总接口
比方说鸟和壁虎都属于动物,都实现动物接口,按理动物接口要包括飞行方法、爬行方法,但鸟类实现接口之后具有爬行方法、显然不合适。所以要拆分成,飞行动物接口和爬行动物接口。
六、迪米特原则(最少知道原则)
一个软件实体应当尽可能少地与其他实体发生相互作用
迪米特法则要求我们在设计系统时,应该尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应当发生任何直接的相互作用,如果其中的一个对象需要调用另一个对象的某一个方法的话,可以通过第三者转发这个调用。简言之,就是通过引入一个合理的第三者来降低现有对象之间的耦合度。
