美文网首页
Java 设计模式3-抽象工厂模式

Java 设计模式3-抽象工厂模式

作者: 顺应自然y | 来源:发表于2019-08-06 22:24 被阅读0次

    抽象工厂模式是工厂方法模式的升级版。工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。

    类似于下面这种方式:

    (1) 抽象工厂接口:提供了产品的生成方法。

    interface AbstractFactory
    {
        public Product1 newProduct1();
        public Product2 newProduct2();
    }
    

    (2) 具体工厂:实现了产品的生成方法。

    class createFactory1 implements AbstractFactory
    {
        public Product1 newProduct1()
        {
            System.out.println("工厂 1 生成-->具体产品 11...");
            return new createProduct11();
        }
        public Product2 newProduct2()
        {
            System.out.println("工厂 1 生成-->具体产品 21...");
            return new createProduct21();
        }
    }
    

    对之前的工厂方法模式进行改造:

    public interface Cat {
        void eat();
    }
    
    
    public interface Dog {
        void eat();
    }
    
    public class WhiteCat implements Cat {
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("whiteCat eat");
        }
    
    }
    
    public class BlackCat implements Cat {
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("BlackCat eat");
        }
    
    }
    
    public class WhiteDog implements Dog {
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("whiteDog eat");
    
        }
    
    }
    
    public class BlackDog implements Dog{
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("BlackDog  eat");
        }
    
    }
    

    工厂类的接口,生产两个等级的产品

    
    public interface AnimalFactory {
    
        Cat createCat();
    
        Dog createDog();
    
    }
    
    
    

    不同的工厂类:

    public class BlackAnimalFactory implements AnimalFactory {
    
        @Override
        public Cat createCat() {
            // TODO Auto-generated method stub
            return new BlackCat();
        }
    
        @Override
        public Dog createDog() {
            // TODO Auto-generated method stub
            return new BlackDog();
        }
    
    }
    
    
    public class WhiteAnimalFactory implements AnimalFactory{
    
        @Override
        public Cat createCat() {
            // TODO Auto-generated method stub
            return new WhiteCat();
        }
    
        @Override
        public Dog createDog() {
            // TODO Auto-generated method stub
            return new WhiteDog();
        }
    
    }
    

    测试类:

    
    public class AnimalTest {
    
        public static void main(String[] args) {
            AnimalFactory blakAnimalFactory = new BlackAnimalFactory();
            Cat blackCat=blakAnimalFactory.createCat();
            blackCat.eat();
            
            AnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
            Cat whiteCat=whiteAnimalFactory.createCat();
            whiteCat.eat();
    
        }
    }
    

    结果:

    
    BlackCat eat
    whiteCat eat
    
    

    相关文章

      网友评论

          本文标题:Java 设计模式3-抽象工厂模式

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