1.为什么会出现设计模式
我们将一个功能模块,使用OO来抽象为不同的类,然后这些类协作完成功能。类协作的时候就产生了类与类之间的耦合。类和类的协作产生耦合其实就是new导致的。
例如:
class A{
public void method(){
B b = new B();
C c = new C();
D d = new D();
b.doB();
c.doC();
d.DoD();
}
}
如上图所示为了实现类A的method方法,就依赖与类B,C,D,考虑这几个类如果发生变化,则,这里的代码也要变化。所以这里就出现了一种紧耦合。其实只要一出现new则此处的代码就依赖与这个实现了。所以要解耦合,就是要消除这些 new 带来的紧耦合。所谓设计模式,其实就是在不同的耦合场景下,如何将new给去掉的一种方式。例如:创建形模式解决的是new带来的对象耦合问题。再一个设计模式的一个目的就是对重复代码进行重构,例如模板方法模式(行为型模式),重复代码提升为模板方法。设计模式还有一个目的就是实现代码复用:例如适配器模式,就可以实现复用已有的代码,代理模式:增强已有代码的作用。等等。。。