属于类创建型模式。又叫工厂方法模式,又被成为多态工厂模式,因为它完全符合开闭原则。工厂父类负责定义创建产品对象的公共接口,工厂子类负责不同产品的具体实现,增强了代码的扩展性。
开闭原则:类对于扩展是开放的,但是对于修改是封闭的。
包含有四个角色:PRoduct抽象产品,ConcreteProduct体产品,Factory抽象工厂,ConcreteFactory具体工厂。
当只有一个具体工厂时,在具体工厂中可以创建所有的产品对象,并且工厂设计方法为静态设计方法时,工厂方法模式将退化为简单工厂模式。
工厂模式保持了简单工厂模式的优点,且客服了简单工厂模式的缺点,完全符合开闭原则。但是在增加新工厂时,会成对增加系统类数, 增加了系统的复杂性。
属于类创建型模式。简单工厂模式最大的有点在于对象的创建和对象的使用分离,可以降低代码的耦合度,使得两者修改起来都相对容易;其二,静态方法,调用方便;但是其最大的缺点在于工厂类不够灵活,增加新的产品需要修改工厂内部的判断逻辑,而且一旦产品较多时,工厂内部逻辑显得较为复杂,违背了开闭原则。
适用情况:工厂类负责创建的对象比较少;调用者只需要传入几个参数,并不关心其创建细节。
属于类创建型模式。一个产品类的实例如何被创建、组合和表达的细节,我们并不需要知道和关心时,那么就适用于所有的工厂类模式。
单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例。
单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须向进程提供这个实例。单例模式是一个对象创建型模式。
单例类,必须提供一个私有的构造函数,确保调用者无法通过new关键字实例化它。除此之外还需要一个公共的静态工厂getInstance方法来获得实例和一个自身的私有静态成员变量。
作用;避免产生过多的对象消耗过多的资源,或者说有的对象有且只能有一个。
懒汉式单例最大的弊端在于:已经实例化后,多线程还在串行执行getInstance方法,浪费不必要的资源。所以应该将synchronized关键字移到判空后面,双层判空方法。
builder模式特点;
需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性。需要生产的产品对象的属性相互依赖,需要指定其生成顺序。新闻热点
疑难解答