工厂方法模式
来源:互联网 发布:文章植入广告软件 编辑:程序博客网 时间:2024/05/17 10:54
《Android设计模式》笔记,如有侵权,请联系我删除,谢谢
一。定义
定义一个用于创建对象的借口,让子类决定实例化哪个类
二。使用场景
在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式
三。实现
可以利用反射的方式简洁第来生产具体的产品对象,需要在工厂方法的参数列表中传入一个Class类来决定是哪一个产品类。
*****************************************************************************************************************
package com.yinazh.designpattern;
public abstract class Product{
public abstract void method();
}
public class COncreteProductA extends Product{
public void method(){
System.out.println("product A");
}
}
public class COncreteProductB extends Product{
public void method(){
System.out.println("product B");
}
}
public abstract class Factory{
public abstract <T extends Product> T createProduct(Class<T> clz);
}
public class ConcreteFactory extends Factory{
public <T extends Product> T createProduct(Class<T> clz){
Product p = null;
try{
p = (Product)Class.forName(clz.getName()).newInstance();
}catch(Exception e){
e.printStactTrace();
}
return (T)p;
}
}
public class Client{
public static void main(String[] args){
Factory factory = new ConcreteFactory();
Product p = factory.createProduct(COncreteProductA.class);
p.method();
}
}
*****************************************************************************************************************
此时,需要哪一个类,就传入哪个类的类型即可。当有多个工厂时,可以分别实现某个具体的产品;而若只有一个工厂类时,可以将工厂方法改为静态方法。
四。总结
工厂方法模式是完全符合设计原则的,其降低了对象之间的耦合度,而且工厂方法依赖于抽象的架构,其将实例化交由子类去完成,有很好的扩展行。
但是,其缺点也是不可避免的,每次为工厂方法模式添加新的产品时,就要编写一个新的产品类,同事还要引入抽象层,着必然会导致类的结构的复杂化。
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式---工厂方法模式
- 【模式】工厂方法模式
- 工厂方法,抽象工厂模式
- C#工厂模式-工厂方法
- 工厂模式 和工厂方法
- 工厂模式-C-工厂方法
- 工厂模式以及工厂方法
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 工厂模式(简单工厂、工厂方法)
- 简单工厂|工厂方法|抽象工厂模式
- 设计模式-工厂模式(简单工厂模式+工厂方法模式)
- 数独问题
- java 集合学习笔记2-ArrayList LinkedList Vector 泛型 增强for 可变参数
- iOS 【一行代码集成一款精致的第三方OC日历——WZYCalendar】
- 先验概率,后验概率,似然概率,条件概率,贝叶斯,最大似然
- 从学校评估谈起
- 工厂方法模式
- AppScript-批处理自动执行git push等操作
- POJ 3680 最小费用最大流
- 如何创建自己的SeetaFace Alignment工程
- Java的clone方法
- 五子棋游戏
- Android项目实践之菜鸟养成 (一)引言
- 企业高并发的成熟解决方案(一) ----负载均衡服务器
- 【寒江雪】DX11初始化讲解