您当前的位置: 首页 > 

梁云亮

暂无认证

  • 0浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

工厂方法设计模式

梁云亮 发布时间:2019-10-15 09:31:46 ,浏览量:0

工厂方法

工厂方法模式的核心是工厂类不再负责所有产品的创建,而是将具体的创建工作交给它的实现类去做。这样,工厂类成为一个抽象角色,它仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类怎么被创建的细节。

工厂方法模式的核心是一个抽象工厂类,它允许具体工厂类从抽象工厂类中将创建行为继承下来。

原则:

  • 为每个产品提供统一的接口
  • 为每个产品提供单独的工厂
  • 为工厂类提供统一的接口

特点:

  • 一个抽象的产品类,可以派生出多个具体的产品类。
  • 一个抽象的工厂类,可以派生出多个具体的工厂类。
  • 每个具体的工厂类只能创建一个具体的产品类的实例。
  • 每增加一个产品只要增加相应的工厂方法即可。这种设计的优势是能够方便的增加产品,但可能会导致工厂泛滥。

在这里插入图片描述

示例
  • 产品接口
public interface Traffic {
    void run();

    void brake();
}
  • 产品类
public class Audi implements Traffic {
    @Override
    public void run() {
        System.out.println("audi run");
    }
    @Override
    public void brake() {
        System.out.println("audi brake");
    }
}
public class Benz implements Traffic {
    @Override
    public void run() {
        System.out.println("benz run");
    }
    @Override
    public void brake() {
        System.out.println("benz brake");
    }
}
public class BMW implements Traffic {
    @Override
    public void run() {
        System.out.println("bmw run");
    }
    @Override
    public void brake() {
        System.out.println("bmw brake");
    }
}
  • 工厂接口:
public interface TrafficFactory {
    Traffic create();
}
  • 工厂类:
public class AudiFactory implements TrafficFactory {
    @Override
    public Traffic create() {
        return new Audi();
    }   
}
public class BenzFactory implements TrafficFactory {
    @Override
    public Traffic create() {
        return new Benz();
    } 
}
public class BMWFactory implements TrafficFactory {
    @Override
    public Traffic create() {
        return new BMW();
    }
}
  • 测试代码:
public static void main(String[] args) {
    TrafficFactory factory ;

    // factory =new AudiFactory();
    //factory = new BenzFactory();
    factory = new BMWFactory();

    Traffic traffic = factory.create();
    traffic.run();
    traffic.brake();
}
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0418s