Java设计模式之简单工厂模式

来源:互联网 发布:linux informix 卸载 编辑:程序博客网 时间:2024/06/05 05:41
设计模式之简单工厂举例:
l简单工厂模式概述
又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例
l优点
客户端不需要在负责对象的创建,从而明确了各个类的职责
l缺点

这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护

概述:

动物抽象类:public abstract Animal { public abstract void eat(); }

具体狗类:public class Dog extends Animal {}

具体猫类:public class Cat extends Animal {}

开始,在测试类中每个具体的内容自己创建对象,但是,创建对象的工作如果比较麻烦,就需要有人专门做这个事情,所以就知道了一个专门的类来创建对象。

源代码:

package 创建型_简单工厂模式;public abstract class Animal {public abstract void eat();}

package 创建型_简单工厂模式;public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗吃肉");}}

package 创建型_简单工厂模式;public class Cat extends Animal {@Overridepublic void eat() {System.out.println("貓吃魚");}}

package 创建型_简单工厂模式;//如果你想买狗或者猫,那叫这个工厂类去造出来,你就不用早了public class AnimalFactory {private AnimalFactory(){}//下面写的static方法,但是也不是很好,因为后面很可能还要加一些方法,比如Pig,...public static Dog createDog(){return new Dog();}public static Cat createCat(){return new Cat();}//所以面向接口或抽象编程,穿什么类型就造什么类型,但是还是有缺陷可能传入的不能造public static Animal createAnimal(String type){if("dog".equals(type)){return new Dog();} else if("cat".equals(type)){return new Cat();} else{return null;}}}

package 创建型_简单工厂模式;public class AnimalMain {public static void main(String[] args) {//具体类调用,自己造狗和猫  最原始的Dog dog = new Dog();dog.eat();Cat cat = new Cat();cat.eat();System.out.println("---------");//工厂有了后,通过工厂给造  有些缺陷的//AnimalFactory af = new A..//不能再new,因为提供的是私有的构造方法Dog dog2 = AnimalFactory.createDog();Cat cat2 = AnimalFactory.createCat();dog2.eat();cat2.eat();System.out.println("---------");//工厂改进后Animal animal = AnimalFactory.createAnimal("dog");animal.eat();//重新为animal赋值animal = AnimalFactory.createAnimal("cat");animal.eat();//但是这个工厂还是有小问题的,你比如animal = AnimalFactory.createAnimal("pig");//animal.eat();//编译不会报错,但是运行会爆出空指针异常//所以呢,我们在造东西(对象)时,要先判断一下,只要是对象就要判断if(animal!=null){animal.eat();} else{System.out.println("对不起,此工厂暂时不提供造猪pig");}}}


0 0
原创粉丝点击