• 抽象工厂模式


    抽象工厂模式

    什么是抽象工厂模式

    抽象工厂简单地说是工厂的工厂,抽象工厂可以创建具体工厂,由具体工厂来产生具体产品。

     

     抽象工厂,工厂的工厂。   与工厂方法的区别是一组。

     具体细分到某个产品的领域 

        抽象工厂 生产不同的产品族         简单工厂 工厂方法 都是同一个产品族

       抽象工厂 不是相同类型产品的 最后拼接成同一种产品    正常的情况下 业务逻辑下的 同一个产品组下的    当业务很复杂时候 会用到抽象工厂    做零部件的组装   

        看下面的例子:

      先定义不同发动机:

    package abstractFactory;
    //发动机  有不同的型号 
    public interface Engine {
       void run();
    }
    
    class EnginA implements Engine{
        @Override
        public void run() {
            System.out.println("发动机转速很快");
            
        }
    }
    
    class EnginB implements Engine{
        @Override
        public void run() {
            System.out.println("发动机转速很慢");
            
        }
    }

    定义不同座位:

    package abstractFactory;
    //座位
    public interface Chair {
       
      void run();   
        
    }
    
    class ChairA implements Chair{
        @Override
        public void run() {
            System.out.println("自动加热");
            
        }
    }
    
    class ChairB implements Chair{
        @Override
        public void run() {
            System.out.println("不能加热");
            
        }
    }

    然后去组装(包装零部件):

     定义包装工厂的接口:

    package abstractFactory;
    
    public interface CarFactory {
    
          //创建发动机
        Engine createEngin();
          
          //创建座椅
        Chair createChair();
    }

    实现不同的组装类:

    package abstractFactory;
    
    public class JiliFactory implements CarFactory {
    
           @Override
        public Chair createChair() {
            
            return new ChairA();
        }
           
        @Override
        public Engine createEngin() {
            
            return new EnginA();
        }
    }

    上面组装了个吉利汽车

    下面运行演示一下:

    package abstractFactory;
    
    
    public class Client {
    
        public static void main(String[] args) {
            //具体哪个factory
            CarFactory carFactory =  new JiliFactory();
           Chair chair = carFactory.createChair();
           Engine engin = carFactory.createEngin();
           chair.run();
           engin.run();
            
        }
    }

    运行结果:

    抽象工厂和工厂方法: 抽象工厂可以放产多种不同品族 支持增加产品族   但是不支持扩展产品族

  • 相关阅读:
    开启Nginx代理HTTPS功能
    Linux查找运行程序主目录
    Linux命令记录
    Eclipse 安装 阿里P3C编码规范插件
    Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy
    JS小技巧
    改变窗口或屏幕大小时调用function
    毛玻璃效果 | fifter
    position: sticky;不一样失效原因
    mysql 修改密码问题 5.6,5.7 (配置方式的skip-grant-tables可能不行,推荐命令行方式)
  • 原文地址:https://www.cnblogs.com/toov5/p/9863578.html
Copyright © 2020-2023  润新知