您的位置:首页 > 其它

工厂模式(屌丝专用)

2014-04-13 09:19 183 查看
钱是屌丝最缺的东西,为大家提供造钱工厂让你们嗨翻天。

意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

适用性:

1、屌丝用钱的时候才去造钱

2、屌丝决定造出什么毛爷爷

大家先看个类图



1.Product

定义工厂方法所创建的对象的接口。

2.ConcreteProduct

实现Product接口。

3.Creator

声明工厂方法,该方法返回一个Product类型的对象。

4.ConcreteCreator

重定义工厂方法以返回一个ConcreteProduct实例。

具体实现:

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();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息