码迷,mamicode.com
首页 > 其他好文 > 详细

抽象工厂模式

时间:2018-10-27 22:08:06      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:bsp   技术   code   src   生产   部件   逻辑   产品   不同的   

抽象工厂模式

什么是抽象工厂模式

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

 技术分享图片

 

技术分享图片

 

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

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

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

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

    看下面的例子:

  先定义不同发动机:

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

运行结果:

技术分享图片

 

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

 

抽象工厂模式

标签:bsp   技术   code   src   生产   部件   逻辑   产品   不同的   

原文地址:https://www.cnblogs.com/toov5/p/9863578.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!