抽象工厂模式创建对象

结合反射应用,使用class.forName反射创建对象,通过泛型约束参数类型
新产品只需实现CommonAPI即可,无需修改工厂

public abstract class CommonGenerator{

    public abstract <T extends CommonAPI>T genCommon(Class<T> tClass) throws Exception;

    /**
     * 只需实现此接口
     */
    public interface CommonAPI{
        String getSomething();
    }
}
public class CommonFactory extends CommonGenerator {

    @Override
    public <T extends CommonAPI> T genCommon(Class<T> tClass) throws Exception {
        CommonAPI commonInfo = (CommonAPI) Class.forName(tClass.getName()).newInstance();
        return (T)commonInfo;
    }
}

测试

public class IPhone implements CommonGenerator.CommonAPI{

    @Override
    public String getSomething() {
        return "this is Iphone";
    }
}
public class Test {

    public static void main(String []s) throws Exception {
        String r =new CommonFactory().genCommon(IPhone.class).getSomething();
        System.out.print(r);
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 场景问题# 大家都知道,在Java应用开发中,要“面向接口编程”。那么什么是接口?接口有什么作用?接口如何使用...
    七寸知架构阅读 11,588评论 14 70
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,281评论 19 139
  • 1 场景问题# 1.1 选择组装电脑的配件## 举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选...
    七寸知架构阅读 9,910评论 6 67
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 6,377评论 0 3
  • 也许我的热情太贪婪, 我有太多的梦。 我梦见每天的早餐,晚餐, 梦见煎蛋的香味叫醒睡梦中的你, 梦见摇曳的烛光映衬...
    楚生阅读 2,870评论 0 0

友情链接更多精彩内容