创建型模式(5):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
- 工厂方法模式(Factory Method):创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
- 抽象工厂模式(Abstract Factory):它的里面是一堆工厂方法,每个工厂方法返回某种类型的对象。
- 单例模式(Singleton):在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。
好处:
a.某些类创建比较频繁,对一些大型的对象,这是一笔很大的系统开销。
b.省去了new操作符,降低了系统内存的使用频率,减轻GC压力。 - 建造者模式(Builder):
- 原型模式(Prototype):原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。
结构型模式(7):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
-
适配器模式(Adapter):
a.类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。
b.对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法就行。
c.接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法,我们写别的类的时候,继承抽象类即可。 -
装饰模式(Decorator):
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。
应用场景:
a.需要扩展一个类的功能。
b.动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
缺点:产生过多相似的对象,不易排错! -
代理模式(Proxy):就是采用一个代理类调用原有的方法,且对产生的结果进行控制。
-
外观模式(Facade):外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口。(Computer)
-
桥接模式(Bridge):桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化。
-
组合模式(Composite):组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便。
-
享元模式(Flyweight):享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。
行为型模式(11):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。