设计模式之----工厂模式
一.工厂模式专门负责大量有共同接口的类的实例化,工厂模式可以动态的决定实例化哪一个类。工厂模式可以分为3类
---(1)简单工厂模式,又叫静态工厂方法模式
---(2)工厂方法模式,又叫多态性工厂模式
---(3)抽象工厂模式,又叫工具箱模式
二.简单工厂模式,由一个工厂类决定创建哪一个产品。包括3个角色(工厂类根据参数不同,实例化不同的产品对象。不修改代码的话,是无法扩展的)
--工厂类角色:这个角色是这个模式的核心,决定创建哪个产品。在java中它往往由一个具体类实现
--抽象产品角色:是所有具体产品继承的父类或者实现的接口。
--具体产品角色:工厂类所创建的就是这个类的实例。
public class Model {
public static void main(String args[]){
new Factory().factory();
}
//抽象产品
interface Product{}
//具体产品1
static class Product1 implements Product{
public Product1(){
System.out.println("具体产品1");
}
}
static class Factory{
static Product factory(){
return new Product1();
}
}
}
三.工厂方法模式,工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。
包括4个角色:
抽象工厂角色:这个角色是工厂方法模式的核心,是具体工厂继承的父类或者实现的接口。
具体工厂角色:抽象工厂角色的具体实现,用来创建具体的产品
抽象产品角色:产品对象继承的父类或者实现的接口。
具体产品角色:具体的产品对象
public class Model {
public static void main(String args[]){
Product p1 = new Model().new Factory1().create();
}
//抽象产品
interface Product{}
//抽象工厂
interface Factory{
public Product create();
}
//具体产品1
class Product1 implements Product{
public Product1(){
System.out.println("具体产品1");
}
}
//具体产品2
class Product2 implements Product{
public Product2(){
System.out.println("具体产品2");
}
}
//具体工厂1
class Factory1 implements Factory{
@Override
public Product create() {
return new Product1();
}
}
//具体工厂2
class Factory2 implements Factory{
@Override
public Product create() {
return new Product2();
}
}
}
四抽象工厂模式,包含4个角色:
处理具有相同或相似等级的多个产品族的产品对象的创建问题