设计模式 学习笔记4 抽象工厂

本文深入解析了抽象工厂模式,一种用于创建一系列相关或相互依赖对象的设计模式,无需明确指定产品类。通过示例代码展示了如何使用抽象工厂模式来提供不同等级的产品,适用于需要灵活创建多种类型对象的场景。

设计模式 抽象工厂模式

 

抽象工厂(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");

    }

 

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值