设计模式 抽象工厂模式
抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
public class AbstractFactory {
public static Factory createFactory(Class<?> c) {
Factory factory = null;
try {
factory = (Factory) c.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return factory;
}
}
public interface Factory {
public Fruits getFruits(Class<?> c);
public Animal getAnimal(Class<?> c);
}
public class AnimalFactory implements Factory{
@Override
public Fruits getFruits(Class<?> c) {
return null;
}
@Override
public Animal getAnimal(Class<?> c) {
Animal animal = null;
try {
animal = (Animal) c.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return animal;
}
}
public class FruitsFactory implements Factory{
@Override
public Fruits getFruits(Class<?> c) {
Fruits fruits = null;
try {
fruits = (Fruits) c.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
return fruits;
}
@Override
public Animal getAnimal(Class<?> c) {
return null;
}
}
public interface Animal {
public void show();
}
public class Pig implements Animal{
@Override
public void show() {
System.out.println("this is a pig");
}
}
public class Sheep implements Animal{
@Override
public void show() {
System.out.println("this is a sheep");
}
}
public interface Fruits {
public void show();
}
public class Apple implements Fruits{
@Override
public void show() {
System.out.println("this is an apple");
}
}
public class Orange implements Fruits{
@Override
public void show() {
System.out.println("this is an orange");
}
}
本文深入解析了抽象工厂模式,一种用于创建一系列相关或相互依赖对象的设计模式,无需明确指定产品类。通过示例代码展示了如何使用抽象工厂模式来提供不同等级的产品,适用于需要灵活创建多种类型对象的场景。
396

被折叠的 条评论
为什么被折叠?



