一、使用工厂模式:传入一个class类来决定是哪一个产品类
来源:互联网 发布:mac最好用的压缩软件 编辑:程序博客网 时间:2024/04/28 13:49
一、工厂模式及其优化版本
public abstract class Product { public abstract void method();}
public class ConcreteProductA extends Product { @Override public void method() { System.out.println("我是产品A"); }}
public class ConcreteProductB extends Product { @Override public void method() { System.out.println("我是产品B"); }}
public abstract class Factory { public abstract <T extends Product> T createProduct(Class<T> cls);}
/** * Created by Administrator on 2016/12/7. */public class ConcreteFactory extends Factory { //利用反射的方式更简洁地来生产具体的产品对象,需要在工厂方法的参数列表中传入一个class类来决定是那个产品类 @Override public <T extends Product> T createProduct(Class<T> cls) { Product p = null; try { p = (Product) Class.forName(cls.getName()).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return (T) p; }}
public class Test { public static void main(String[] args){ Factory factory = new ConcreteFactory(); //需要哪个类的对象就传入那个类的类型即可,这种方式比较简洁、动态 Product product = factory.createProduct(ConcreteProductB.class); product.method(); }}
工厂模式的优点:降低了对象的耦合,将实力化的任务交由子类去完成,有非常好的扩展性
缺点:每次为工厂方法模式添加新的产品时就要编写一个新的产品类,同时还要引入抽象层,导致类结构的复杂化。
实际的应用场景
二、Activity中Fragment的碎片化管理(明天将案例加上!)
0 0
- 一、使用工厂模式:传入一个class类来决定是哪一个产品类
- 工厂模式-简单工厂模式-省略抽象产品类
- C#设计模式之工厂模式(Factory)--04 抽象工厂模式中访问具体产品类的属性
- 一个女性产品类的Magento模板
- 产品类的操作
- 简单工厂模式——使用最简单的需求来完成一个简单工厂模式
- 产品类的经验分享
- [技术讨论]如何确定一个类是mvc中的哪一个
- combobox怎样根据item内容来决定显示哪一个item
- 快乐是一个决定
- 数值分析类智力题(IT产品类笔面试题型真题分析)
- IT产品类企业网站设计方案
- IT产品类企业网站设计方案
- 腾讯产品类实习生应聘记
- 应用产品类业务--测试总结
- 通过onTouch来确定点击的是listView哪一个item
- 【java设计模式】单例设计模式案例:工厂加工零件(对象是工厂,所以就需要创建一个工厂的类)
- C++定义一个类,如果成员变量没有说明是共有还是私有那默认的是哪一个?
- 包装类(字符串转数字,数字转字符串,进制转换等)
- GridView的简单使用
- C#计算器(递归,WebService) 支持加减乘除括号等 (二)
- 【百度地图API】之定位篇
- PHP---对crud进行封装
- 一、使用工厂模式:传入一个class类来决定是哪一个产品类
- cin.fail(), cin.bad(), cin.good(), cin.clear(), cin.ignore()
- 关联类型
- 概率算法
- Bootstrap学习总结笔记(19)-- 基本插件之Popover提示框
- DAO(Data Access Object)数据库程序接口的异常类案例
- android 多级树形控件的开发
- 类型约束
- linux下安装配置jdk8