设计模式

一 创建型模式

创建对象时隐藏创建逻辑,而不是直接使用new的方式创建对象,可以根据程序判定创建什么样的对象,这样会很灵活

1.工厂模式

在工厂模式中,不对外暴露对象创建的过程,用户需要什么跟工厂要就行.

优点:

  • 不需要知道产品内部实现细节,只需要知道产品对应的接口能干嘛就行
  • 扩展性高,增加一类产品只需要多写一个工厂类就行

缺点:

  • 每次创建一类产品,都需要增加一个工厂类,而多增加一个产品,需要更改工厂类的代码

举例说明:

​ 我们买车只需要直接告诉造车工厂我们需要什么车就行,不需要知道车怎么造出来的,如果我们需要买飞机,我们就需要告诉造飞机的工厂,

​ 车:接口

​ 奥迪:具体实现类

​ 造车工厂:工厂类

​ 我们知道车可以干嘛,然后我们可以根据喜欢向工厂要什么样的车.

​ 每多一个接口,就需要多 一个工厂类,每多一个具体实现类,工厂类里面就需要多些一段代码.

何时使用: 明确知道不同条件下需要创建什么对象,如果创建对象本来就很简单,我们还是直接new比较好

2.抽象工厂模式(---------)

抽象工厂是工厂的工厂,它可以创建工厂类对象,创建的工厂又可以提供创建用户需要对象的功能

优点:

  • 保证用户使用的都是一类产品

缺点:

  • 扩展新的工厂比较麻烦,需要为抽象工厂添加新方法,每个具体工厂也得实现这个方法(虽然不干嘛)

抽象工厂模式其实也是工厂模式,只不过抽象工厂创建的是工厂,工厂创建的是产品

3.单例模式

私有化构造器,保证全局只有一个对象

创建单例的几种方法:

  1. 懒汉式
  2. 饿汉式
  3. 双重校验锁(其实也是懒汉式)
  4. 枚举
  5. 静态内部类(里面编写一个静态内部类,添加一个属性赋值为单例对象)

4.建造者模式

通过一步一步构建,创造出对象,与工厂模式的区别:更加关注装配的顺序