Java-面向对象_简单工厂设计模式
不仅可以使用父类做方法的形参,还可以使用父类做方法的返回值类型,真实返回的对象可以是该类的任意一个子类对象。
简单工厂模式的实现,它是解决大量对象创建问题的一个解决方案,将创建和使用分开,工厂负责创建,使用者直接调用即可。简单工厂模式的基本要求是:
定义一个static方法,通过类名直接调用
返回值类型是父类类型,返回的可以是其任意子类类型
传入一个字符串类型的参数,工厂根据参数创建对应的子类产品
子类代码:
public class Pig extends Animal{ public void shut() { System.out.println("我是小猪,我会嗯嗯嗯叫"); } }
public class Cat extends Animal{ public void shut() { System.out.println("我是小猫,我会喵喵叫"); } }
使用者代码:
public class Girl { public void play(Animal animal ) { animal.shut(); } }
父类代码:
public class Animal { public void shut(){ System.out.println("我是小动物,我会叫"); } }
工厂类代码:
public class PetStore {//宠物类 --》工厂类 public static Animal getPet(String PetName) {//多态的应用场合(二) Animal an = null; if("猫".equals(PetName)) {// PetName.equals("猫") 这样写容易出现空指针异常 an = new Cat(); } if ("猪".equals(PetName)) { an = new Pig(); } return an; } }
测试类:
public class Test { public static void main(String[] args) { Girl g = new Girl(); Animal animal = PetStore.getPet("猫"); g.play(animal); } }
运行: