java设计模式-工厂模式(2)

简介:工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。它提供了一种创建对象的最佳方式。

代码实例:

  1. 简单工厂模式:也叫静态工厂

实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

  1. 工厂模式

工厂方法是粒度很小的设计模式,因为模式的表现只是一个抽象的方法。 提前定义用于创建对象的接口,让子类决定实例化具体的某一个类,即在工厂和产品中间增加接口,工厂不再负责产品的创建,由接口针对不同条件返回具体的类实例,由具体类实例去实现。

代码:

汽车接口

/\*\*

 \* @author 

 \* @since 2019/4/12

 \*/

public interface ICar {

    void getCar();

}

汽车类别

/\*\*

 \* @author 

 \* @since 2019/4/12

 \*/

public enum CarType {

    JEEP,//吉普車

    BMW//寶馬

}

宝马汽车实现类

/\*\*

 \* @author 

 \* @since 2019/4/12

 \*/

public class BMWCar implements ICar {

@Override

public void getCar() {

    System.out.println("宝马车");

}

}

吉普车实现类

/\*\*

 \* @author 

 \* @since 2019/4/12

 \*/

public class JeepCar implements ICar{

    @Override

    public void getCar() {

        System.out.println("吉普车");

    }

}

工厂

/\*\*

 \* @author 

 \* @since 2019/4/12

 \*/

public class Factory {

    public ICar getCarByType(CarType type) {

        switch (type) {

            case BMW: return new BMWCar();

            case JEEP: return new JeepCar();

            default:return null;

        }

    }

}
/\*\*

 \* 简单工厂测试

 \*/

@Test

public void simagleFactoryTest() {

    Factory factory = new Factory();

    factory.getCarByType(CarType.BMW).getCar();

    factory.getCarByType(CarType.JEEP).getCar();

}
  1. 抽象工厂模式

当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品对象。它有多个抽象产品类,每个抽象产品类可以派生出多个具体产品类,一个抽象工厂类,可以派生出多个具体工厂类,每个具体工厂类可以创建多个具体产品类的实例。

好处:1. 你只要知道对象的名称就可以实例化他,这降低了耦合度。

2. 屏蔽了具体实现,只要知道接口就可以了

3. 扩展简单

坏处:1. 每增加一个产品,都需要创建一个对象以及他的工厂实现

    2. 在简单的实例使用这个模式,会产生很多冗余代码,也降低了复杂度

应用场景:

  1. 系统后期经常扩展
  2. 一个对象拥有很多子类
  3. 创建一个对象要有很多其他操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值