设计模式--工厂方法模式
2014-04-12 00:42 VinpleZhang 阅读(202) 评论(0) 编辑 收藏 举报package cn.itcast_02; public abstract class Animal { public abstract void eat(); } package cn.itcast_02; public interface AnimalFactory { public abstract Animal createAnimal(); } package cn.itcast_02; public class Cat extends Animal { @Override public void eat() { // TODO Auto-generated method stub System.out.println("猫吃鱼"); } } package cn.itcast_02; import cn.itcast_02.AnimalFactory; public class CatFactory implements AnimalFactory{ @Override public Animal createAnimal() { return new Cat(); } } package cn.itcast_02; public class Dog extends Animal { @Override public void eat() { // TODO Auto-generated method stub System.out.println("狗吃骨头"); } } package cn.itcast_02; import cn.itcast_02.AnimalFactory; public class DogFactory implements AnimalFactory{ @Override public Animal createAnimal() { return new Dog(); } } package cn.itcast_02; public class AnimalTest { public static void main(String[] args) { //使用猫的工厂 AnimalFactory af=new CatFactory(); Animal a=af.createAnimal(); a.eat(); //使用狗的工厂 af=new DogFactory(); a=af.createAnimal(); a.eat(); } }
场景 Animal
动物吃的功能
|--Cat
|--CatFactory
|--Dog
|--DogFactory
这个时候,如果需要一个新的子类添加,怎么解决呢? 举例:添加了一个Pig类 优点;在工厂方法法模式中,客户端不在负责对象的创建,并且,当有新的子类添加的时候,只需要添加一个子类和一个子类的工厂类即可。不需要 修改以前的结构,后期更容易维护,增强了系统的扩展性。 缺点:使用该模式需要额外的编写代码。增加了工作量。