一.工厂模式
/**
* 工厂设计模式
* 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
*
* 1.简单工厂模式 采用if或者switch 分别获取不同的实现类
* 2.多方法静态工厂 采用多个静态方法,分别获取不同的实现类
* 3.工厂方法模式 采用多个类实现,获取不同的实例
*/
二,抽象工厂模式
/**
* 抽象工厂模式
* 提供一个创建一系列的相关的或者依赖的对象的接口,无需指定它们的具体实现类,具体的实现分别在子类工厂中产生。
* AbstractFactory
* getFactoryA
* getFactoryB
*
* FactoryA extends AbstractFactory
* getInterfaceA-implementsA-1 返回具体实现类
* getInterfaceB-implementsA-1 返回具体实现类
*
* FactoryB extends AbstractFactory
* getInterfaceA-implementsA-2 返回具体实现类
* getInterfaceB-implementsB-2 返回具体实现类
*
* FactoryProducer 这个可以省去
* getAbstractFactory (A or B) 判断获取哪个具体的工厂类
*
* InterfaceA
* implementsA-1
* implementsA-2
* implementsA-3
*
* InterfaceB
* implementsB-1
* implementsB-2
* implementsB-3
*/
三.单例模式
/**
* 单例模式
* 在单例类的内部实现只生成一个实例,同时它提供一个静态的getInstance()工厂方法,让客户可以访问它的唯一实例;
* 为了防止在外部对其实例化,将其构造函数设计为私有;在单例类内部定义了一个Singleton类型的静态对象,
* 作为外部共享的唯一实例。
*
* 1.饿汉式
* 2.懒汉式
* 3.静态内部类
*
* 参考: https://www.cnblogs.com/kuoAT/p/6725808.html
*/
四.桥接模式
/**
* 桥接模式
* 将抽象部分与实现部分分离,可以独立的变化! (两个维度的变化)
* 我理解的是一种类或者接口中有一些批量的有相同特征的操作,假如使用继承的方式的话就会出现很多继承关系的类
*
* 例如
* Person--->
* Student---->
* WalkStudent
* BicycleStudent
* CarStudent
* ........
* Teacher---->
* WalkTeacher
* BicycleTeacher
* CarTeacher
* ........
* Worker---->
* WalkWorker
* BicycleWorker
* CarWorker
* ........
* .........
* 假如有n种Person的继承,有x种交通方式出门 ,那么就会有 n+n*x+1 个实现类了
*
* 采用桥接的方式的话如下
*
* Person(Vehicle) 传入一个交通工具的实现类
* ↑ ---------->
* 注│ Student--->出门调用传入的Vehicle的方法
* 入│ Teacher--->出门调用传入的Vehicle的方法
* │ Worker--->出门调用传入的Vehicle的方法
* Vehicle ---->
* WalkVehicle 走路实现
* BicycleVehicle 骑自行车
* CarVehicle 开车实现
*
* 采用上述的方式 就会有 n+x+1 个类了
*/