- 工厂方法模式: 定义一个创建产品对象的工厂接口, 让子类决定实例化哪一种实例对象, 也就是将实际创建实例对象的工作推迟到子类当中, 核心工厂类不再负责具体产品的创建.
- 设计原则
(1)"开-闭"原则: 一个软件实体应对扩展开放, 对修改关闭. 我们在设计软件模块的时候应该使这个模块可以在不修改的前提下被扩展.
(2)依赖倒置原则: 不论工厂还是产品都应该依赖于抽象, 而不是具体的实现类. - 使用场合
(1)当子类可能会有很多, 以后需要不断增添不同的子类实现时.
(2)当一个系统尚在框架设计阶段, 还不知道将来需要实例化哪些具体类时
(3)系统设计之初不需要具体对象的概念(或说没有具体对象的概念)
//抽象工厂
public interface ISwordFactory
{
public AbstractSword createSword();
}
//抽象产品
public abstract class AbstractSword
{
private String name;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
//具体工厂
public class CaoCao implements ISwordFactory
{
public AbstractSword createSword()
{
return new QiXingSword();
}
}
//具体产品
public class BaXingSword extends AbstractSword
{
public BaXingSword()
{
this.setName("八星宝刀");
}
}
//Main
public static void main(String[] args)
{
// ISwordFactory factory = new CaoCao();
ISwordFactory factory = new CaoCao2();
//AbstractSword sword = factory.createSword();
AbstractSword sword = factory.createSword();
System.out.println(sword.getName());
}