抽象工厂模式

抽象工厂模式

一、简介

定义:为创建一组相关或者相互依赖的对象提供一个接口,而无需指定它们的具体类。

二、使用场景

一个对象族有相同约束时可以使用抽象工厂模式。系统中有多于一个的产品线,而每次只使用其中某一产品线时同样可以使用抽象工厂模式。

三、抽象工厂模式的简单实现

//抽象工厂类
public abstract class ComputerFactory{
    public abstract IOs createOs();
    public abstract IDisplay createDisplay();

}

//os相关类
public interface IOs {
    void os();
}

public class highVersion implements IOs{

    @Override
    public void os() {
        Log.i(TAG, "os: Version 10.15.5");
    }
}

public class lowVersion implements IOs{

    @Override
    public void os() {
        Log.i(TAG, "os: Version 10.10.1");
    }
}

//display相关类
public interface IDisplay {
    void display();
}

public class normalDisplay implements IDisplay{

    @Override
    public void display() {
        Log.i(TAG, "display: Display size 13.3");
    }
}

public class proDisplay implements IDisplay{

    @Override
    public void display() {
        Log.i(TAG, "display: Display size 15.4");
    }
}

//具体工厂类
public class normalFactory extends ComputerFactory{

    @Override
    public IOs createOs() {
        return new lowVersion();
    }

    @Override
    public IDisplay createDisplay() {
        return new normalDisplay();
    }
}

 //具体工厂类
public class proFactory extends ComputerFactory{

    @Override
    public IOs createOs() {
        return new highVersion();
    }

    @Override
    public IDisplay createDisplay() {
        return new proDisplay();
    }
}

//测试
public void Test(){
    ComputerFactory normal=new normalFactory();
    normal.createOs();
    normal.createDisplay();
    
    ComputerFactory pro=new proFactory();
    pro.createOs();
    pro.createDisplay();
}

上面只有两个具体的工厂类,如果需要增加工厂类那么对应的os和display也需要增加从而导致类的数量徒增这是抽象工厂模式的一个弊端

posted @ 2020-10-09 18:38  Robin132929  阅读(102)  评论(0编辑  收藏  举报