上介绍了工厂方法模式,接下来要介绍的是抽象工厂模式
这2个模式语法上一样,唯一不同的是工厂方法的抽象工厂里面的抽象产品只有一个而抽象工厂里面有多个。
package com.djk.design.factory.abstractfactory;
public class Client
{
public static void main(String[] args)
{
AbstractFactory abstractFactory = new HpFactory();
productInfo(abstractFactory);
}
public static void productInfo(AbstractFactory factory)
{
if (null == factory)
{
return ;
}
Product product = new Product(factory.createCpu(), factory.createMemoer());
product.productInfo();
}
}
package com.djk.design.factory.abstractfactory;
public interface AbstractFactory
{
Cpu createCpu();
Memory createMemoer();
}
package com.djk.design.factory.abstractfactory;
public class HpFactory implements AbstractFactory
{
@Override
public Cpu createCpu()
{
return new HpCpu();
}
@Override
public Memory createMemoer()
{
return new HpMemory();
}
}
package com.djk.design.factory.abstractfactory;
public interface Cpu
{
void say();
}
package com.djk.design.factory.abstractfactory;
public class HpCpu implements Cpu
{
@Override
public void say()
{
System.out.println("Hp CPU....");
}
}
package com.djk.design.factory.abstractfactory;
public interface Memory
{
void say();
}
package com.djk.design.factory.abstractfactory;
public class HpMemory implements Memory
{
@Override
public void say()
{
System.out.println("Hp Memory");
}
}
package com.djk.design.factory.abstractfactory;
public final class Product
{
private final Cpu cpu;
private final Memory memory;
public Product(Cpu cpu, Memory memory) {
super();
this.cpu = cpu;
this.memory = memory;
}
public void productInfo()
{
if (null ==cpu || null == memory)
{
return ;
}else
{
cpu.say();
memory.say();
}
}
}