工厂模式

xiaoxiao2021-02-28  86

上一篇我写了简单工厂模式,我们来分析下简单工厂的优缺点,首先简单工厂是把各个种类的共同方法都抽象进来,然后再让子类去覆盖,这样的好处是对于那些只需要这些简单方法来说很实用,但是如果需要再增加一个方法怎么办?就需要修改抽象工厂类,那么这就违反了开放封闭原则,不便于扩展,而且修改源代码容易出错,如下抽象工厂解析图:

代码实现:

抽象工厂

package com.hy.abstract_factory; public interface AnimalFactory { public Animal createAnimal(); }

Bird工厂:

package com.hy.abstract_factory; public class BirdFactory implements AnimalFactory { @Override public Bird createAnimal() { return new Bird(); } }

Duck工厂:

package com.hy.abstract_factory; public class DuckFactory implements AnimalFactory { @Override public Duck createAnimal() { return new Duck(); } }

Animal抽象类:

package com.hy.abstract_factory; public abstract class Animal { public void fly(){}; public void speak(){}; public void walk(){}; }

Bird类

package com.hy.abstract_factory; public class Bird extends Animal{ @Override public void fly() { System.out.println("bird is fly"); } }

Duck类:

package com.hy.abstract_factory; public class Duck extends Animal{ @Override public void speak() { System.out.println("duck is speak"); } }

//测试类:

package com.hy.abstract_factory; //抽象工厂测试类 public class TestAbstractFactory { public static void main(String[] args) { DuckFactory df = new DuckFactory(); df.createAnimal().speak(); BirdFactory bf = new BirdFactory(); bf.createAnimal().fly(); } }

转载请注明原文地址: https://www.6miu.com/read-70770.html

最新回复(0)