工厂方法的作用和目的就是分离对象的创建和使用
/**
* 女朋友接口
*/
public interface IGirl {
// 洗衣服
public void washClothes();
// 做饭
public void cook();
// 跳舞
public void dance();
// 唱歌
public void sing();
}
/**
*
* 林无敌类实现女朋友接口
*/
public class Linwudi implements IGirl{
@Override
public void washClothes() {
System.out.println("林无敌洗衣服");
}
@Override
public void cook() {
System.out.println("林无敌做饭");
}
@Override
public void dance() {
System.out.println("林无敌跳舞");
}
@Override
public void sing() {
System.out.println("林无敌唱歌");
}
}
/**
*
* 凤姐类实现女朋友接口
*/
public class Fengjie implements IGirl{
@Override
public void washClothes() {
System.out.println("凤姐洗衣服");
}
@Override
public void cook() {
System.out.println("凤姐做饭");
}
@Override
public void dance() {
System.out.println("凤姐跳舞");
}
@Override
public void sing() {
System.out.println("凤姐唱歌");
}
}
/**
*
* 工厂类
*/
public class GirlFactory {
/**
* 工厂方法负责生产产品(即负责创建对象) ,这里生产女朋友产品(即创建女朋友对象)
* 工厂方法的作用和目的就是分离对象的创建和使用(周星星类负责使用女朋友对象,工厂类负责创建女朋友对象)
*/
public static IGirl factory(int type) {
IGirl girl = null;
switch (type) {
case 1:
girl = new Linwudi();
break;
case 2:
girl = new Fengjie();
break;
default:
throw new IllegalArgumentException("参数错误,不能生产对应的产品");
}
return girl;
}
}
/**
* 周星星类
*/
public class Zhouxingxing {
/**
* 生活的方法
* (周星星只要使用女朋友对象即可,至于女朋友怎么来的,周星星不管,那
* 是女朋友工厂类该管的事情,周星星需要女朋友对象的时候只需要调用女朋友工厂类的工厂方法就能得到一个具
* 体的女朋友对象,得到女朋友对象之后拿过来使用就可以了。)
* 工厂方法的作用和目的就是分离对象的创建和使用(周星星类负责使用女朋友对象,工厂类负责创建女朋友对象)
*
*/
public void life() {
//生活时,需要一个女朋友,调用工厂类的工厂方法,返回一个具体的女朋友对象
IGirl girl = GirlFactory.factory(2);
girl.cook();
girl.dance();
girl.washClothes();
girl.sing();
}
}
/**
* 测试类
*/
public class TestZhouxingxing {
public static void main(String[] args) {
Zhouxingxing zhouxingxing = new Zhouxingxing();
zhouxingxing.life();
}
}