初学设计模式
23种设计模式
学一下吧
今年八股太卷了, 只会工厂和单例的二狗被虐的好惨
打算先跟着leetcode看一下, 再看看K_Eckel
六大设计原则
开闭原则: 对修改封闭, 对扩展开放
单一职责原则: 一个类只做一件事, 一个类应该只有一个引起它修改的原因
里氏替换原则: 子类应该可以完全替换父类 也就是说在使用继承时, 只扩展新功能, 而不要破坏父类原有的功能
依赖倒置原则: 细节应该依赖于抽象, 抽象不应依赖于细节 把抽象层放在程序设计的高层, 并保持稳定, 程序的细节变化由低层的实现层来完成
迪米特法则: 又名“最少知道原则”, 一个类不应知道自己操作的类的细节
接口隔离原则: 客户端不应依赖它不需要的接口
工厂模式
梦开始的地方
关于工厂模式讲的太多了, 讲讲为什么用工厂模式:
减少代码量
将具体的构造过程隐藏起来, 使调用者可以不用关注具体的构造过程, 降低代码耦合
延迟了具体化的操作
工厂模式有三种:
简单工厂模式
工厂方法模式
抽象工厂模式
简单工厂
1 | |
简单工厂模式弊端
如果需要生产的产品过多,此模式会导致工厂类过于庞大,承担过多的职责,变成超级类, 违背了单一职责原则。
要生产新的产品时,必须在工厂类中添加新的分支。而开闭原则告诉我们:类应该对修改封闭。我们希望在添加新功能时,只需增加新的类,而不是修改既有的类,所以这就违背了开闭原则。
工厂方法模式
这个看起来就很神奇
为每一个类创建一个工厂, 把复杂的构造隐藏起来, 同时又减轻了简单工厂模式成为 “超级类” 的情况
在新建一个类时, 只需要新建对应的工厂类就可以啦
1 | |
看起来和直接调用构造函数好像差不多的样子
抽象工厂模式
那么,