工厂模式

2019-07-26  本文已影响0人  御都
AnimalFactory的类,通过传入不同参数能够创建不同的子类对象
class AnimalFactory{
    public static Animal getAnimal(int msg){
        Animal a1= null;
        switch(msg){
        case 1:
            a1 = new Cat();
            break;
        case 2:
            a1 = new Dog();
            break;  
        case 3:
            a1 = new Fish();
            break;
        default:
            System.out.println("无效的消息:"+msg);
        }
        return a1;
    }
}
####################
//优势是简单
        //缺点是硬编码,以后将Cat()改了,需要重新编译一次
        Animal a1 = new Cat();
        //改进获取对象的方式
        //代码只和父类Animal 工厂类相关,和具体的子类无关
        //以后更改业务甚至无需修改代码
        //使用父类和工厂类,能达到解耦合
        Animal a2 = AnimalFactory.getAnimal(1);
        Animal a3 = AnimalFactory.getAnimal(2);
        System.out.println(a2 instanceof Cat);
        System.out.println(a3 instanceof Dog);

上一篇 下一篇

猜你喜欢

热点阅读