zoukankan      html  css  js  c++  java
  • ④ 设计模式的艺术-04.抽象工厂(Abstract Factory)模式

    抽象工厂模式

    用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族) 

    抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。

    Engine.java

    public interface Engine {
        void run();
        void start();
    }
    
    
    class LuxuryEngine implements Engine{
    
        @Override
        public void run() {
            System.out.println("转的快!");
        }
    
        @Override
        public void start() {
            System.out.println("启动快!可以自动启停!");
        }
        
    }
    
    class LowEngine implements Engine{
        
        @Override
        public void run() {
            System.out.println("转的慢!");
        }
        
        @Override
        public void start() {
            System.out.println("启动慢!");
        }
        
    }

    Seat.java

    public interface Seat {
        void massage();
    }
    
    class LuxurySeat implements Seat {
    
        @Override
        public void massage() {
            System.out.println("可以自动按摩!");
        }
        
    }
    class LowSeat implements Seat {
    
        @Override
        public void massage() {
            System.out.println("不能按摩!");
        }
        
    }

    Tyre.java

    public interface Tyre {
        void revolve();
    }
    
    class LuxuryTyre implements Tyre {
    
        @Override
        public void revolve() {
            System.out.println("旋转不磨损!");
        }
        
    }
    
    class LowTyre implements Tyre {
    
        @Override
        public void revolve() {
            System.out.println("旋转磨损快!");
        }
        
    }

    CarFactory.java

    public interface CarFactory {
        Engine createEngine();
        Seat createSeat();
        Tyre createTyre();
    }

    LuxuryCarFactory.java

    public class LuxuryCarFactory implements CarFactory {
    
        @Override
        public Engine createEngine() {
            return new LuxuryEngine();
        }
    
        @Override
        public Seat createSeat() {
            return new LuxurySeat();
        }
    
        @Override
        public Tyre createTyre() {
            return new LuxuryTyre();
        }
    
    
    }

    LowCarFactory.java

    public class LowCarFactory implements CarFactory {
    
        @Override
        public Engine createEngine() {
            return new LowEngine();
        }
    
        @Override
        public Seat createSeat() {
            return new LowSeat();
        }
    
        @Override
        public Tyre createTyre() {
            return new LowTyre();
        }
    
    
    }

    Client

    public class Client {
    
        public static void main(String[] args) {
            CarFactory  factory = new LuxuryCarFactory();
            Engine e = factory.createEngine();
            e.run();
            e.start();
        }
    }

    小结

    工厂模式要点

    简单工厂模式(静态工厂模式)

    虽然某种程度不符合设计原则,但实际使用最多。

    工厂方法模式

    不修改已有类的前提下,通过增加新的工厂类实现扩展。

    抽象工厂模式

    不可以增加产品,可以增加产品族!

    应用场景

    JDK中Calendar的getInstance方法

    JDBC中Connection对象的获取

    Hibernate中SessionFactory创建Session

    spring中IOC容器创建管理bean对象

    XML解析时的DocumentBuilderFactory创建解析器对象

    反射中Class对象的newInstance()

  • 相关阅读:
    作业二
    作业一
    作业十一
    作业十
    作业九
    作业八
    作业七
    作业六
    作业五
    JAVA第三次作业
  • 原文地址:https://www.cnblogs.com/cnki/p/8626369.html
Copyright © 2011-2022 走看看