package com.yq1012.创建型模式.工厂方法.工厂模式;
/**
* 动物类
* @author Lyon Yao
*
*/
public abstract class Animal {
private String name;
public Animal() {
super();
// TODO Auto-generated constructor stub
}
public Animal(String name) {
super();
this.name = name;
}
public abstract void eat();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.yq1012.创建型模式.工厂方法.工厂模式;
/**
* 母亲接口
* @author Lyon
*
*/
public interface AnimalMother {
/**
* 生育动物
* @return
*/
public Animal giveBirth();
}
package com.yq1012.创建型模式.工厂方法.工厂模式;
/**
* 猫类
* @author Lyon Yao
*
*/
public class Cat extends Animal {
public Cat() {
// TODO Auto-generated constructor stub
}
public Cat(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("I like to eat fish!");
}
}
package com.yq1012.创建型模式.工厂方法.工厂模式;
/**
* 猫母亲 生猫咪
* @author Lyon Yao
*
*/
public class CatMother implements AnimalMother {
@Override
public Animal giveBirth() {
// TODO Auto-generated method stub
Animal cat=new Cat();
System.out.println("猫母亲生了一只小猫眯");
return cat;
}
}
package com.yq1012.创建型模式.工厂方法.工厂模式;
/**
* 狗类
* @author Lyon Yao
*
*/
public class Dog extends Animal {
public Dog() {
// TODO Auto-generated constructor stub
}
public Dog(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("I like to eat bone!");
}
}
package com.yq1012.创建型模式.工厂方法.工厂模式;
/**
* 狗母亲 生狗
* @author Lyon Yao
*
*/
public class DogMother implements AnimalMother {
@Override
public Animal giveBirth() {
// TODO Auto-generated method stub
Animal dog=new Dog();
System.out.println("狗母亲生了一只小狗");
return dog;
}
}
package com.yq1012.创建型模式.工厂方法.工厂模式;
public class Test {
public static void main(String[] args) {
//工厂方法模式:其主要是对各个类型的东西分类生产,但分类生产的对象仍然是具有某一特性的
//譬如说:前面的静态工厂类是一个综合造车工厂,不管是汽车还是火车都能生产,
//而工厂方法模式就是工厂具体分工,造汽车的工厂只造汽车,造火车的只造火车,不管造汽车还是火车但造出来的还是车。
//具体代码例子如下:(这里的例子和上面的例子是一起的,具狗生好多小狗,猫生好多小猫的例子,如果不具体那么是母动物都能生的)
AnimalMother mother=new CatMother();
mother.giveBirth();
mother=new DogMother();
mother.giveBirth();
}
}
来源于 http://blog.csdn.net/renhui999/article/details/8482977