美文网首页
java设计模式03(抽象工厂模式)

java设计模式03(抽象工厂模式)

作者: 刺风有道 | 来源:发表于2019-04-07 00:11 被阅读0次

    在工厂方法模式中每一个具体工厂只需生产一种具体产品,但是在抽象工厂模式中一个具体工厂可以生产一组相关的具体产品。当系统所提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构,属于不同类型的具体产品时就可以使用抽象工厂模式。
    抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,他负责创建一族产品。

    定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

    抽象工厂模式结构与实现
    1.AbstractFactory(抽象工厂):声明了一组用于创建一族产品的方法,每一个方法对应一种产品。

    public interface AbstractFactory {
    
        public AbstractProductA createProductA();
        
        public AbstractProductB createProductB();
        
        //...
    }
    

    2.ConcreteFactory(具体工厂):实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。

    public class ConcreteFactory implements AbstractFactory {
    
        @Override
        public AbstractProductA createProductA() {
            return new ConcreteProductA();
        }
    
        @Override
        public AbstractProductB createProductB() {
            return new ConcreteProductB();
        }
    
    }
    

    3.AbstractProduct(抽象产品):为每一种产品声明接口,在抽象产品中声明了产品所有的业务方法。

    public interface AbstractProductA {
        
        public void applyProductA();
    
    }
    
    public interface AbstractProductB {
    
        public void applyProductB();
    }
    

    4.ConcreteProduct(具体产品):定义了具体工厂生产的具体产品对象,实现了抽象产品接口中声明的业务方法。

    public class ConcreteProductA implements AbstractProductA {
    
        @Override
        public void applyProductA() {
            System.out.println("应用productA成功!");
        }
    
    }
    
    public class ConcreteProductB implements AbstractProductB{
    
        @Override
        public void applyProductB() {
            System.out.println("应用productB成功!");
        }
    
    }
    

    5.Test

    public class Test {
    
        public static void main(String[] args) {
            AbstractFactory abstractFactory=new ConcreteFactory();
            AbstractProductA productA=abstractFactory.createProductA();
            productA.applyProductA();
            AbstractProductB productB=abstractFactory.createProductB();
            productB.applyProductB();
        }
    
    }
    

    相关文章

      网友评论

          本文标题:java设计模式03(抽象工厂模式)

          本文链接:https://www.haomeiwen.com/subject/hddliqtx.html