简单工厂
package factory.simple;
import factory.Apple;
import factory.Banana;
import factory.Fruit;
import factory.Mango;
public class SimpleFactory {
public Fruit bugFruit(String type) {
if ("1".equals(type)) {
return new Apple();
} else if ("2".equals(type)) {
return new Banana();
} else if ("3".equals(type)) {
return new Mango();
} else {
return null;
}
}
}
测试
package factory.simple;
public class SimpleFactoryTest {
public static void main(String[] args) {
SimpleFactory simpleFactory = new SimpleFactory();
System.out.println(simpleFactory.bugFruit("1"));
System.out.println(simpleFactory.bugFruit("2"));
System.out.println(simpleFactory.bugFruit("3"));
}
}
工厂方法
package factory.func;
import factory.Fruit;
public interface FunctionFactory {
Fruit buyFruit();
}
package factory.func;
import factory.Apple;
import factory.Fruit;
public class AppleFactory implements FunctionFactory {
@Override
public Fruit buyFruit() {
return new Apple();
}
}
package factory.func;
import factory.Banana;
import factory.Fruit;
public class BananaFactory implements FunctionFactory {
@Override
public Fruit buyFruit() {
return new Banana();
}
}
package factory.func;
import factory.Fruit;
import factory.Mango;
public class MangoFactory implements FunctionFactory {
@Override
public Fruit buyFruit() {
return new Mango();
}
}
测试
package factory.func;
public class FunctionFactoryTest {
public static void main(String[] args) {
FunctionFactory appleFactory = new AppleFactory();
System.out.println(appleFactory.buyFruit());
FunctionFactory bananaFactory = new BananaFactory();
System.out.println(bananaFactory.buyFruit());
MangoFactory mangoFactory = new MangoFactory();
System.out.println(mangoFactory.buyFruit());
}
}
抽象工厂
package factory.abstr;
import factory.Fruit;
public abstract class AbstractFactory {
abstract Fruit buyApple();
abstract Fruit buyBanana();
abstract Fruit buyMango();
}
package factory.abstr;
import factory.Apple;
import factory.Banana;
import factory.Fruit;
import factory.Mango;
import factory.func.AppleFactory;
import factory.func.BananaFactory;
import factory.func.MangoFactory;
public class FruitFactory extends AbstractFactory{
@Override
Fruit buyApple() {
// return new Apple();
return new AppleFactory().buyFruit(); // 组合
}
@Override
Fruit buyBanana() {
// return new Banana();
return new BananaFactory().buyFruit(); // 组合
}
@Override
Fruit buyMango() {
// return new Mango();
return new MangoFactory().buyFruit(); // 组合
}
}
package factory.abstr;
public class AbstractFactoryTest {
public static void main(String[] args) {
AbstractFactory factory = new FruitFactory();
System.out.println(factory.buyApple());
System.out.println(factory.buyBanana());
System.out.println(factory.buyMango());
}
}
公用接口和实体
package factory;
public interface Fruit {
String getName();
}
package factory;
public class Apple implements Fruit {
@Override
public String getName() {
return "苹果";
}
}
package factory;
public class Banana implements Fruit {
@Override
public String getName() {
return "香蕉";
}
}
package factory;
public class Mango implements Fruit {
@Override
public String getName() {
return "芒果";
}
}