《Head First 设计模式》读书笔记四--工厂模式

工厂模式

通过工厂模式来达到一个类创建多个不同对象的目的。

简单工厂

通过创建多个判断条件或者是多个方法,来达到创建多个类的目的。
好处:这样能规避调用者对于内部实现细节的了解
坏处:这个违反了开闭原则(对于修改是闭合的,对于扩展是开放的);问题是这个东西如果需要扩展就需要修改老的业务代码。

public class SimpleFactory {
    private static Car car;
    public static Car createCar(String type){
        if(type=="Benz"){
            car=new Benz();
        }else if(type=="Audi"){
            car=new Audi();
        }
        return car;
    }
}

工厂方法

通过增加多个工厂方法,来规避开闭原则的问题;这样可以在增加新的业务时多增加一个新的实现类即可。

public class BenzFactory implements CarFactory {
    public Car createCar() {
        return new Benz();
    }
}

抽象工厂

这个其实和工厂类没啥太大关系。
出现的原因是因为线上业务一般不可能是一个接口就能实现的,这样就会出现一种说法-----产品簇。
通过封装多个接口和实现,来组装出工厂类,使用工厂类来实现。

public class LowFactory implements  CarFactory{
	//通过定义来创建,可以调用相关的数据
    public Seat createSeat() {
        return new LuxurySeat();
    }

    public Engine createEngine() {
        return new LuxuryEngine();
    }
}

个人感觉下面的方法更加好:

//名字改一改,然后通过传进去的参数来确认创建怎样的(这个其实是策略模型,哈哈哈)
public class LuxuryFactory implements  CarFactory {
    Seat seat=new LuxurySeat();
    Engine engine=new LuxuryEngine();

    public LuxuryFactory(Seat seat, Engine engine) {
        this.seat = seat;
        this.engine = engine;
    }

    public Seat createSeat() {
        return seat;
    }

    public Engine createEngine() {
        return engine;
    }
}

你可能感兴趣的:(设计模式,java学习,技术博客)