(原创)认识设计模式-抽象工厂

2015/03/12 设计模式

介绍

img

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

抽象工厂模式仅仅是工厂方法模式的加强版,使用场景就是创建的对象比较复杂,需要多个对象组合。好比机器人生产线,需要生产四肢,躯干,大脑等其它工厂实例组合一起使用,从而生产出一个完整的机器人,当然交付给客户使用的时候,客户压根不管也不知道你这个机器人是如何生产出来的,只要能按照需求正常使用即可。

使用方式

	abstract public class ProductA {
	
	    abstract public void doSomething();
	
	}
	
	public class ConcreteProductA extends ProductA {
	
	    public void doSomething()
	    {
	        System.out.println("ProductA doSomething()");
	    }
	
	}
	
	abstract public class FactoryA {
	
	    abstract public ProductA createProduct();
	}
	
	public class ConcreteFactoryA extends FactoryA {
	
	    @Override
	    public ProductA createProduct() {
	        return new ConcreteProductA();
	    }
	}
	
	abstract public class ProductB {
	
	    abstract public void doSomething();
	
	}
	
	public class ConcreteProductB extends ProductB {
	
	    public void doSomething()
	    {
	        System.out.println("ProductB doSomething()");
	    }
	
	}
	
	abstract public class FactoryB {
	
	    abstract public ProductB createProduct();
	}
	
	public class ConcreteFactoryB extends FactoryB {
	
	    @Override
	    public ProductB createProduct() {
	        return new ConcreteProductB();
	    }
	}

	public class ProductFinal {
	    private ProductA mProductA;
	    private ProductB mProductB;
	
	    public ProductFinal()
	    {
	        mProductA = new ConcreteFactoryA().createProduct();
	        mProductB = new ConcreteFactoryB().createProduct();
	    }
	    public void doSomething()
	    {
	
	    }
	}
	
	public class Client {
	
	    public ProductFinal createProductFinal()
	    {
	        return new ProductFinal();
	    }
	
	}
	
	public class Main {
	
	    public static void main(String[] args) throws Exception {
	
	        Client client = new Client();
	        ProductFinal productFinal = client.createProductFinal();
	        productFinal.doSomething();
	
	    }
	}

以上只是个非常简单的轮廓代码,真正使用到抽象工厂模式的地方代码绝对不简单,简单的也没必要用抽象工厂模式。


知识共享许可协议
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

站内搜索

    撩我备注-博客

    joinee

    目录结构