美文网首页
Java 设计模式1-简单工厂模式

Java 设计模式1-简单工厂模式

作者: 顺应自然y | 来源:发表于2019-07-26 21:20 被阅读0次

    简单工厂模式不属于标准的Java 23设计模式之内。根据分类,简单工厂模式又分类为:1.普通简单工厂模式。2.多方法简单工厂模式。3.静态方法简单工厂模式。

    1.普通简单工厂模式

    先从最简单的普通简单工厂模式开始,工厂模式就是用来进行类的实例化,对实现了同一接口的类进行类的实例化。

    公共的接口

    public interface Animal {
        void eat();
    }
    

    类实现公共的接口

    public class Dog implements Animal{
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("Dog eat");
        }
    
    }
    
    public class Cat implements Animal{
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("Cat eat");
        }
    
    }
    

    工厂类,用来创建实例

    
    public class AnimalFactory {
    
        public Animal makeAnimal(String type) {
    
            if (type.equals("dog")) {
                return new Dog();
            } else if (type.equals("cat")) {
                return new Cat();
            }
            return null;
        }
    
    }
    
    

    测试类

    
    public class AnimalTest {
    
        public static void main(String[] args) {
    
            AnimalFactory animalFactory = new AnimalFactory();
    
            Animal cat = animalFactory.makeAnimal("cat");
    
            cat.eat();
    
            Animal dog = animalFactory.makeAnimal("dog");
    
            dog.eat();
    
        }
    }
    

    输出:

    Cat eat
    Dog eat
    
    

    2.多方法简单工厂模式
    接着,循序渐进,我们开始了解多方法简单工厂模式,为了避免在创建对象的时候传递错误字符串导致创建错误实例,我们改成不传递字符串的方式,在工厂类里面,有多个工厂方法来达到创建多个对象的目的。

    1.修改工厂类

    public class AnimalFactory {
    
        public Animal produceDog() {
    
            return new Dog();
        }
    
        public Animal producCat() {
    
            return new Cat();
        }
    
    }
    

    测试类修改:

    public class AnimalTest {
    
        public static void main(String[] args) {
    
            AnimalFactory animalFactory = new AnimalFactory();
    
            Animal cat = animalFactory.producCat();
    
            cat.eat();
    
            Animal dog = animalFactory.produceDog();
    
            dog.eat();
    
        }
    }
    

    输出:

    Cat eat
    Dog eat
    
    

    3.静态方法简单工厂模式

    最后,我们开始了解静态方法简单工厂模式,为了不需要new 工厂类,我们在工厂类创建对象的方法改成静态调用。

    1.修改工厂类

    public class AnimalFactory {
    
        public static Animal produceDog() {
    
            return new Dog();
        }
    
        public static Animal producCat() {
    
            return new Cat();
        }
    
    }
    
    

    测试类

    public class AnimalTest {
    
        public static void main(String[] args) {
    
    
            Animal cat = AnimalFactory.producCat();
    
            cat.eat();
    
            Animal dog = AnimalFactory.produceDog();
    
            dog.eat();
    
        }
    }
    

    输出:

    Cat eat
    Dog eat
    
    

    综上所述:对比三种简单工厂模式,不难看出,第三种方式的优势最为明显,不需要担心在获取实例的时候传递错字符串,也避免了去写new 工厂类的繁琐,所以,一般情况下,我们会使用第三种方式。

    相关文章

      网友评论

          本文标题:Java 设计模式1-简单工厂模式

          本文链接:https://www.haomeiwen.com/subject/pookrctx.html