zoukankan      html  css  js  c++  java
  • 简单工厂模式

    工厂模式

    工厂模式是类创建模式的一种,通常是工厂类来根据传入参数的不同来创建不同类的实例,工厂类创建类的实例,这些类通常是有一个公共的父类。

    下面的这张图基本展示了这种关系

    Dataformat创建

    简单工厂模式实例

    public class SimpleFactory {
    
        public static Product getProduct(String className) throws IllegalAccessException, InstantiationException {
            if (className.equals("ProductA")) {
                return new ProductA();
            } else if (className.equals("ProductB")) {
                return new ProductB();
            } else {
                return null;
            }
        }
         //通过反射创建对象
        public static Product getProduct2(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
            Class aClass = Class.forName(className);
            return (Product) aClass.newInstance();
    
        }
    
        public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    
            Product pro = SimpleFactory.getProduct2("ProductA");
            pro.print();
            //pro.print();
        }
    }
        abstract class Product{//父类
            public void print() {
    
            }
        }
         class ProductA extends  Product{
            public void print(){
                System.out.println("A success build");
            }
        }
        class ProductB extends  Product{
            public void print(){
                System.out.println("B success build");
            }
        }
    
    

    小结

    工厂模式优点:实现对象创建和使用的分离,客户端人员只需要掌握如何使用而不用管对象是如何创建出来的。

    工厂模式缺点:新增一个新产品就要修改工厂类创建实例时候的判断逻辑部分的代码。

  • 相关阅读:
    面向对象的继承关系体现在数据结构上时,如何表示
    codeforces 584C Marina and Vasya
    codeforces 602A Two Bases
    LA 4329 PingPong
    codeforces 584B Kolya and Tanya
    codeforces 584A Olesya and Rodion
    codeforces 583B Robot's Task
    codeforces 583A Asphalting Roads
    codeforces 581C Developing Skills
    codeforces 581A Vasya the Hipster
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13454975.html
Copyright © 2011-2022 走看看