【设计模式】1.1工厂方法模式 Factory Method(创建型-类)

意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类(接口类)的实例化延迟到其子类。

适用性:

当一个类不知道它所必须创建的对象的类的时候。(工厂不知道具体创建产品A还是产品B)

当一个类希望由它的子类来指定它所创建的对象的时候。(用工厂A和工厂B来创建产品)

当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

类图:

/**
    工厂方法模式
/*
// FactoryMethod工厂方法类 
public class FactoryMethod{
	public static void main(String[] args){
        // 创建一个工厂
        Factory factoryA = new FactoryA();
        
        // 创建一个产品
		Product productA = factoryA.createProduct()  // 编译看=左边(是否有对应的方法),运行看=右边(实际是否有对应的方法)
		productA.info(); // 具体产品的方法




        // 创建一个工厂
        Factory factoryB = new FactoryB();
        
        // 创建一个产品
		Product productB = factoryB.createProduct()
		productB.info(); // 具体产品的方法

	}
}
 
// Product 产品接口
interface Product{
    public void info();
}

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

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

// Factory 工厂接口
interface Factory{
	public Product createProduct();
}

// FactoryA 实现 工厂接口
class FactoryA implements Factory{
      @Override
      public Product createProduct(){
        return new ProductA();
      }
}

// FactoryB 实现 工厂接口
class FactoryB implements Factory{
     @Override
      public Product createProduct(){
        return new ProductB();
      }
}

猜你喜欢

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