zoukankan      html  css  js  c++  java
  • 抽象工厂模式

    抽象工厂模式

    什么是抽象工厂模式

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

     

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

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

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

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

        看下面的例子:

      先定义不同发动机:

    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();
            
        }
    }

    运行结果:

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

  • 相关阅读:
    镜像转换:img转换为iso
    IDM的谷歌插件安装
    Adams和UG许可证冲突问题
    步进电机驱动总结
    比赛官网收集
    树莓派安装pip包管理工具
    光固化打印后处理过程
    Arduino 串口库函数
    六足蜘蛛机器人行走控制
    温湿度传感器DHT11程序示例
  • 原文地址:https://www.cnblogs.com/toov5/p/9863578.html
Copyright © 2011-2022 走看看