zoukankan      html  css  js  c++  java
  • 工厂方法模式笔记

    定义

    定义了一个创建对象的接口,让它的子类决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。

    使用

    一个工厂Factory接口,其中包含一个创建特定类的方法createProduce,这个方法由工厂接口的具体类来实现,每个实现类(如ConcreateFactoryA)会创建一个对应的,实现Product接口的具体类(如ProductA)并返回。

    代码(Java)

    // 产品接口
    public interface Product {
        void method();
    }
    ​
    // 产品类A
    public class ProductA implements Product {
        @Override
        public void method() {
            System.out.println("This is ProductA");
        }
    }
    ​
    // 产品类B
    public class ProductB implements Product {
        @Override
        public void method() {
            System.out.println("This is ProductB");
        }
    }
    ​
    // 工厂接口
    public interface Factory {
        Product createProduct();
    }
    ​
    // 生成产品A的工厂类
    public class ConcreteFactoryA implements Factory {
        @Override
        public Product createProduct() {
            return new ProductA();
        }
    }
    ​
    // 生成产品B的工厂类
    public class ConcreteFactoryB implements Factory {
        @Override
        public Product createProduct() {
            return new ProductB();
        }
    }
    ​
    // 测试类
    public class Client {
        public static void main(String[] args) {
            Factory factory = new ConcreteFactoryA();
            Product product = factory.createProduct();
            product.method(); // 输出:This is ProductA
            
            factory = new ConcreteFactoryB();
            product = factory.createProduct();
            product.method(); // 输出:This is ProductB
        }
    }

    总结

    将创建对象的代码集中在一个对象或方法中,可以避免代码中的重复,并且更方便以后的维护。

    当增加产品时,只需要增加对应的产品和工厂类,而不需要修改现有的代码,符合开-闭原则。

    同时也实现了针对接口编程,而不针对实现编程。

  • 相关阅读:
    信息领域热词分类分析03
    虚拟机Linux联网问题
    每日学习
    第七章 Centos下搭建Maven私有仓库
    第六章 Maven-profile及插件
    第五章 Maven-构建生命周期、阶段、目标
    第四章 Maven-依赖管理
    第三章 Maven-pom.xml文件
    第二章 Maven-Repository存储库
    第一章 Maven入门
  • 原文地址:https://www.cnblogs.com/zawier/p/6890655.html
Copyright © 2011-2022 走看看