类图:
实现:
Factory.java
package com.factory.abstract_factory;
public interface Factory {
public ProductA createProductA();
public ProductB createProductB();
}
Factory1.java
package com.factory.abstract_factory;
public class Factory1 implements Factory{
@Override
public ProductA createProductA() {
return new ProductA1();
}
@Override
public ProductB createProductB() {
return new ProductB1();
}
}
Factory2.java
package com.factory.abstract_factory;
public class Factory2 implements Factory{
@Override
public ProductA createProductA() {
return new ProductA2();
}
@Override
public ProductB createProductB() {
return new ProductB2();
}
}
ProductA.java
package com.factory.abstract_factory;
public interface ProductA{
public void printName();
}
ProductA1.java
package com.factory.abstract_factory;
public class ProductA1 implements ProductA{
@Override
public void printName() {
System.out.println("product A1");
}
}
ProductA2.java
package com.factory.abstract_factory;
public class ProductA2 implements ProductA{
@Override
public void printName() {
System.out.println("product A2");
}
}
ProductB.java
package com.factory.abstract_factory;
public interface ProductB{
public void showName();
}
ProductB1.java
package com.factory.abstract_factory;
public class ProductB1 implements ProductB {
@Override
public void showName() {
System.out.println("product B1");
}
}
ProductB2.java
package com.factory.abstract_factory;
public class ProductB2 implements ProductB{
@Override
public void showName() {
System.out.println("product B2");
}
}
Main.java
package com.factory.abstract_factory;
public class Main {
public static void main(String args[]) {
Factory fac = new Factory1();
ProductA a = fac.createProductA();
ProductB b = fac.createProductB();
a.printName(); // product A1
b.showName(); // product B1
Factory fac2 = new Factory2();
ProductA a2 = fac2.createProductA();
ProductB b2 = fac2.createProductB();
a2.printName(); // product A2
b2.showName(); // product B2
}
}