美文网首页程序员地瓜哥的小屋
Java中的抽象工厂模式

Java中的抽象工厂模式

作者: CodingDGSun | 来源:发表于2021-12-28 09:30 被阅读0次

    抽象工厂模式简介

    • 模式属于创建型模式,它提供了一种创建对象的最佳方式。
    • 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。
    • 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
    接口IComputerProduct
    //电脑产品接口
    public interface IComputerProduct {
        void start();
    
        void shutdown();
    }
    
    子类AComputer和BComputer
    //A电脑
    public class AComputer implements IComputerProduct {
        @Override
        public void start() {
            System.out.println("开启A电脑");
        }
    
        @Override
        public void shutdown() {
            System.out.println("关闭A电脑");
        }
    }
    
    //B电脑
    public class BComputer implements IComputerProduct {
        @Override
        public void start() {
            System.out.println("开启B电脑");
        }
    
        @Override
        public void shutdown() {
            System.out.println("关闭B电脑");
        }
    }
    
    接口ITVProduct
    //电视机产品接口
    public interface ITVProduct {
        void start();
    
        void shutdown();
    }
    
    子类ATV和BTV
    //A电视
    public class ATV implements ITVProduct {
        @Override
        public void start() {
            System.out.println("开启A电视");
        }
    
        @Override
        public void shutdown() {
            System.out.println("关闭A电视");
        }
    }
    
    //B电视
    public class BTV implements ITVProduct {
        @Override
        public void start() {
            System.out.println("开启B电视");
        }
    
        @Override
        public void shutdown() {
            System.out.println("关闭B电视");
        }
    }
    
    接口IProductFactory
    //抽象产品工厂
    public interface IProductFactory {
        //生产电脑
        IComputerProduct iComputerProduct();
    
        //生产电视
        ITVProduct itvProduct();
    }
    
    子类AFactory和BFactory
    public class AFactory implements IProductFactory {
        @Override
        public IComputerProduct iComputerProduct() {
            return new AComputer();
        }
    
        @Override
        public ITVProduct itvProduct() {
            return new ATV();
        }
    }
    
    public class BFactory implements IProductFactory {
        @Override
        public IComputerProduct iComputerProduct() {
            return new BComputer();
        }
    
        @Override
        public ITVProduct itvProduct() {
            return new BTV();
        }
    }
    
    测试类
    public class Test {
        public static void main(String[] args) {
            AFactory aFactory = new AFactory();//A工厂
            IComputerProduct iComputerProduct = aFactory.iComputerProduct();//A工厂电脑产品
            iComputerProduct.start();
            iComputerProduct.shutdown();
    
            ITVProduct itvProduct = aFactory.itvProduct();//A工厂电视产品
            itvProduct.start();
            itvProduct.shutdown();
    
            BFactory bFactory = new BFactory();//B工厂
            iComputerProduct = bFactory.iComputerProduct();//B工厂电脑产品
            iComputerProduct.start();
            iComputerProduct.shutdown();
    
            itvProduct = bFactory.itvProduct();//B工厂电视产品
            itvProduct.start();
            itvProduct.shutdown();
            /**
             * 输出结果:
             * 开启A电脑
             * 关闭A电脑
             * 开启A电视
             * 关闭A电视
             * 开启B电脑
             * 关闭B电脑
             * 开启B电视
             * 关闭B电视
             */
        }
    }
    
    测试结果
    开启A电脑
    关闭A电脑
    开启A电视
    关闭A电视
    开启B电脑
    关闭B电脑
    开启B电视
    关闭B电视
    

    相关文章

      网友评论

        本文标题:Java中的抽象工厂模式

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