抽象工厂模式

抽象工厂模式

抽象工厂模式

什么是抽象工厂模式

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

 

 

 

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

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

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

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

    看下面的例子:

  先定义不同发动机:

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

运行结果:

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值