1.工厂模式
简单工厂 基本上就是直接new对象的方式
工厂方法 判断类的方法参数,根据参数进行判断创建不同的对象
抽象工厂 根据创建接口,抽象类创建对象
2.单例模式
恶汉模式 如果是要线程安全,则只需加上synchronized即可。
class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static [synchronized] Singleton getInstance(){
if(instance == null)
{
instance = new Singleton;
}
return instance;
}
}
饱汉模式
class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
3.Builder模式 + Factory模式
工厂模式创建的是一个零件,Builder模式是在外部知道情况下创建的一个整体,
比如创建房子的过程先造地板,再造墙,再。。的过程。
4.原型模式 Prototype
创建一个原型,然后进行copy
5.Composite模式和Facade模式
组合模式和外观模式的区别:外观模式旨在创建一个统一的门面,比如CPU,内存的操作都通过键盘或者屏幕这个门面来提供统一的外观。
而组合模式则侧重点在总体和部分的关系。
6.Proxy - Decorator
代理模式和装饰着模式,主要区别是装饰者模式旨在装饰需要修改的类,则从构造函数中传递进想要装饰的目标进行装饰。
而代理模式则自己不想亲自出面,需要提供代理。所以需要改造的类是在内部进行new的,而不是从参数随时传入的。
7.Prototype 原型模式
当要创建的对象每次创建时比较复杂,比如费时或者耗费资源时,可以考虑创建一个原型,每次都进行拷贝过去即可。
8.Bridge模式
主要是将抽象和实现解耦,使二者独立变化。
比较鲜明的例子:
Java的JDBC使用了桥接模式,通过DriverManager来获取对应的Driver,
然后通过获取的Driver来执行相应的数据库操作动作。
9.Flyweight模式
享元模式,主要是提供共享数据的模式,比如文本文件中有很多可以共有的元素,数据库连接池(共享池)机制。