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