https://git.oschina.net/hennancf/d23/tree/master
1.简单工厂模式
通过专门创建一个类来负责创建其他类的实例,被创建的实例通常都有共同的父类
public static Friut getFriut(String type) throws Exception{
//type = "cn.hennancf.d23.Aplet";
Class fruit = Class.forName(type);
return (Friut) fruit.newInstance();
}
1.1 各个角色和职责的分配
A 工厂角色
简单工厂模式的核心,他负责实现创建所有实例的内部逻辑,工厂类可以被外界直接引用创建所需产品对象;
B 抽象角色
所有被创建实例的父类;
C 具体产品角色
简单工厂模式所创建的具体实例对象;
1.2 简单工厂模式的优缺点
优点:在这个模式中工厂类是这个模式的关键所在,它包含必要的逻辑判断,能够根据外界的信息判断,究竟应该创建那个具体的实例对象;
用户使用时可以直接根据工厂创建所需实例,无需了解其如何创建以及如何维护,有利于整个软件结构的优化;
缺点:由于工厂类集中了所有实例创建逻辑,所以高内聚方面做得不好。当产品类不断地增多时,工厂类也要不断地修改,维护比较麻烦。
2.工厂方法模式
工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。核心工厂类不再负责创建,这样核心类成为一个
抽象工厂角色,仅负责具体子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下
引进新产品
2.1 角色与职责
A 抽象工厂角色
简单工厂模式的核心,任何工厂都必须继承他。
B 具体工厂角色
具体工厂角色是抽象工厂角色的一个实例化,他负责实例化产品对象。
C 抽象角色
所有被创建实例的父类;
D 具体产品角色
简单工厂模式所创建的具体实例对象;
3.抽象工厂模式
抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。
2.1 角色与职责
A 抽象工厂角色
抽象工厂模式的核心,包含对多个产品机构的声明,任何工厂类都必须实现这个接口。
B 具体工厂角色
具体工厂角色是抽象工厂角色的一个实现,他负责实例化某个产品族中的产品对象。
C 抽象角色
抽象模式所创建的所有对象的父类,他负责描述所有实例所共有的公共接口;
D 具体产品角色
抽象工厂模式所创建的具体实例对象;
2.2 总结
抽象工厂中方法对应产品结构,具体工厂对应产品族。