设计模式-工厂模式
2015-10-21 13:43
357 查看
1.定义
定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟到子类。2.UML
3.代码
Product抽象类public abstract class Product { abstract void method(); }
具体Product类
public class Product1 extends Product { @Override void method() { System.out.println("产品1"); } }
public class Product2 extends Product { @Override void method() { System.out.println("产品2"); } }
工厂接口
public interface Factory { <T extends Product> T createProduct(Class<T> c); }
具体工厂
public class ConcreteFactory implements Factory { @Override public <T extends Product> T createProduct(Class<T> c) { Product product = null; try { product = c.newInstance(); } catch (Exception e) { e.printStackTrace(); } return (T) product; } }
场景类
public class FactoryClient { public static void main(String[] args) { Factory factory = new ConcreteFactory(); Product product1 = factory.createProduct(Product1.class); product1.method(); Product product2 = factory.createProduct(Product2.class); product2.method(); } }
相关文章推荐
- 你不知道的JavaScript--Item14 使用prototype的几点注意事项
- sql server返回插入数据表的id,和插入时间
- Android_07_监控SD卡的状态
- 【搜索】[NOIP2012]mayan游戏
- 你不知道的JavaScript--Item14 使用prototype的几点注意事项
- Redis数据类型之列表类型--Redis系列四
- 例题4.6 包装木板 UVa10652
- @RequestMapping 用法详解之地址映射(转)
- 数据结构_表达式求值
- TIPTOP實務--退貨折讓向廠商收款的作法(支票)
- 前端项目结构设计精细方案
- 根据元素类型获取tuple中的元素
- Qt小技巧(1)
- 採購單單別/稅別選錯,怎麼辦?
- Let's Encrypt 正式出發(免费HTTPS证书即将到来)
- [树莓派]启用root账户
- Metasploit使用Hash直接登录Windows
- 文章标题
- FFmpeg常用基本命令
- 最简单的基于FFmpeg的libswscale实例