单例模式:在程序的运行过程中,某个类只能有一个实例并且提供了一个全局的访问点。
简单工厂:一个工厂类根据传入的参量决定创建出那一种产品类的实例。
工厂方法:定义一个创建对象的接口,让子类决定实例化那个类。
抽象工厂:创建相关或依赖对象的家族,而无需明确指定具体类。
建造者模式:封装一个复杂对象的构建过程,并可以按步骤构造。
原型模式:存在一个实例,通过复制现有的实例来创建新的实例。
适配器模式:将一个类的方法接口转换成客户希望的另外一个接口。
组合模式:将对象组合成树形结构以表示“”部分-整体“”的层次结构。
装饰模式:动态的给对象添加新的功能。
代理模式:为其他对象提供一个代理以便控制这个对象的访问。
线程安全的几种单例:
a.双重检测
public class Singleton{
private Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
b.饿汉式
public class Singleton{
private Singleton(){
}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
c.静态内部类
public class Singleton{
private Singleton(){
}
static class innerSingleton{
private final static Singleton instance = new Singleton();
}
public Singleton getInstance(){
return innerSingleton.instance;
}
}
1.为什么要用工厂模式
a.解耦:把对象的创建和使用的过程分开
b.降低代码重复:如果创建某个对象的过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复代码。
c.方便维护:由于创建过程都由工厂统一管理,所以发生业务逻辑变化,不需要找到所有需要创建对象B的地方去逐个修正,只需要在工厂里修改即可,降低维护成本
工厂模式参考:https://blog.csdn.net/qq_34337272/article/details/80472071
2.简单工厂模式中涉及的角色
a.工厂角色:该工厂类来创建所有的对象
b.抽象产品角色
c.具体产品角色
3.工厂模式:与简单工厂模式中的工厂类不同,在工厂方法模式中,对象提供不同的工厂,由对象工厂生成对象。每一个工厂类生产一种产品
工厂模式的角色:
a.抽象工厂角色
b.具体工厂类角色
c.抽象产品角色
d.具体产品角色
4.抽象工厂模式:与工厂模式类似,也存在四种角色,不同的是,抽象工厂中的工厂角色可以生产一个产品簇。
比如美的工厂即生产电冰箱也生产空调