钱是 丝最缺的东西,为大家提供造钱工厂让你们嗨翻天。
意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
适用性:
1、 丝用钱的时候才去造钱
2、 丝决定造出什么毛爷爷
大家先看个类图

1.Product
定义工厂方法所创建的对象的接口。
2.ConcreteProduct
实现Product接口。
3.Creator
声明工厂方法,该方法返回一个Product类型的对象。
4.ConcreteCreator
重定义工厂方法以返回一个ConcreteProduct实例。
< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+vt/M5cq1z9ajujwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">package creatingtype.factorymethod; public interface Money { /** * 打印钞票 */ public void printMoney(); }
package creatingtype.factorymethod;
public interface MoneyFactory {
/**
* 获得Money
*/
public Money getMoney();
}
package creatingtype.factorymethod;
public class BlueMoney implements Money {
/**
* 打印钞票
*/
public void printMoney() {
System.out.println("你获得了蓝色的50元毛爷爷一张");
}
}
package creatingtype.factorymethod;
public class BlueMoneyFactory implements MoneyFactory {
/**
* 获得Money
*/
public Money getMoney() {
return new BlueMoney();
}
}
package creatingtype.factorymethod;
public class RedMoney implements Money {
/**
* 打印钞票
*/
public void printMoney() {
System.out.println("你获得了红色的100元毛爷爷一张");
}
}
package creatingtype.factorymethod;
public class RedMoneyFactory implements MoneyFactory {
/**
* 获得Money
*/
public Money getMoney() {
return new RedMoney();
}
}
package creatingtype.factorymethod;
// 工厂方法模式
public class MainClass {
// 工厂方法模式同样属于类的创建型模式又被称
// 为多态工厂模式 。工厂方法模式的意义是定义一个创建
// 产品对象的工厂接口,将实际创建工作推迟到子类当中。
// 核心工厂类不再负责产品的创建,这样核心类成为一个
// 抽象工厂角色,仅负责具体工厂子类必须实现的接口,
// 这样进一步抽象化的好处是使得工厂方法模式可以使系
// 统在不修改具体工厂角色的情况下引进新的产品。
public static void main(String[] args) {
//获得BlueMoneyFactory
MoneyFactory bmf = new BlueMoneyFactory();
//通过BlueMoneyFactory来获得BlueMoney实例对象
Money bm = bmf.getMoney();
bm.printMoney();
//获得RedMoneyFactory
MoneyFactory rmf = new RedMoneyFactory();
//通过RedMoneyFactory来获得RedMoney实例对象
Money rm = rmf.getMoney();
rm.printMoney();
}
}