【设计模式】1.简单工厂模式 Simple Factory

简单工厂模式属于创建型模式,但不是23种设计模式之一。

定义:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类

在简单工厂模式中用于被创建实例方法通常为静态(static)方法,因此简单工厂模式又称为静态工厂方法(Static Factory Method)

需要什么样的产品就传入产品对应的参数,就可以获取所需要的产品对象,而无需知道其实现过程。

例如:有一家饺子店,当客户需要某种饺子时,饺子店生成对应的饺子给客户。这里就可以把饺子店看成工厂(Factory),饺子看成产品(Product) ,饺子的名称看成参数,饺子店根据不同的参数返回不同的饺子。

比如: 客户想要韭菜饺子,这里非菜就是参数,饺子店会根据参数韭菜返回韭菜饺子(当然饺子店有韭菜饺子的前提下)

三类角色:
工厂(核心):负责实现创建所有产品的内部逻辑,工厂类可以被外界直接调用,创建所需对象。→ static 静态方法调用:类名.静态方法名() 

抽象产品: 工厂类所创建的所有对象的父类,封装了产品对象的公共方法,所有的具体产品为其子类对象。→ abstract
 
具体产品:简单工厂模式的创建目标,所有被创建的对象都是某个具体类的实例。它要实现抽象产品中声明的抽象方法。

类图:

/**

    简单工厂模式
/*

// SimpleFactory 简单工厂类 
public class SimpleFactory{
	public static void main(String[] args){

        // 具体产品   =   类名.静态方法名() → 返回实例化的产品
		Product productA = Factory.createProduct("A")
		productA.info(); // 具体产品的方法

        // 具体产品   =   类名.静态方法名() → 返回实例化的产品
		Product productB = Factory.createProduct("B") 
		productB.info(); // 具体产品的方法
	}
}
 
// Product 抽象产品类,不能被实例化,继承它的子类可以实例化 
abtract class Product{
    // info 抽象方法 
	public abstract void info();
}

// ProductA 具体产品类
class ProductA extends Product{

    // 实现抽象产品类中的抽象方法
	@Override
	public void info(){
		System.out.println("产品A")
	
	}
}

// ProductB 具体产品类
class ProductB extends Product{

    // 实现抽象产品类中的抽象方法
	@Override
	public void info(){
		System.out.println("产品B")
	}
}

// Factory 工厂类
class Factory{
    
    // createProduct 创建产品的静态方法,返回 Product 类型结果
	public static Product createProduct(String type){
        
        // 定义一个产品
		Product product = null;

		switch(type){
			case "A":
				product = new ProductA(); // 实例化具体产品
				break;
			case "B":
				product = new ProductB(); // 实例化具体产品
				break;
			default:
				System.out.println("没有"+type+"类型的产品")
			break;
		}
		return product;
	}
}


猜你喜欢

转载自blog.csdn.net/weixin_41989013/article/details/134223079