zoukankan      html  css  js  c++  java
  • 学习设计模式之简单工厂

    简单工厂是属于创建型模式,又叫静态工厂方法 Static Factory Method 模式,简单工厂是由一个工厂创建对象决定创建出那一种产品类的实例。
    

    类结构图
    Creator
    简单工厂的核心,它负责实现创建所有实例的内部逻辑。被提供给客户端调用,创建所需的产品对象。
    IProduct
    抽象产品所被创建所有对象的父类型,它所负责描述所有实例公共行为。
    Concrete Product
    具体被创建出的对象,是简单工厂的创建目标。

    public interface IProduct {
    void function();
    }

    public class Producta implements IProduct {
    @Override
    public void function() {
    System.out.println(“Producta 的行为!”);
    }
    }

    public class Productb implements IProduct {
    @Override
    public void function() {
    System.out.println(“Productb 的行为!”);
    }
    }

    public class ProductFactory {
    private ProductFactory() {
    }

    public static final IProduct getInstance(String key) {
        IProduct product = null;
        switch (key) {
            case "A":
                product = new Producta();
                break;
            case "B":
                product = new Productb();
                break;
        }
        return product;
    }
    

    }

    优点:工厂类是整个模式的关键,包含了必要的逻辑判断,根据客户端给定的信息,决定究竟创建哪个具体类的对象。通过使用工厂类客户端可以直接创建具体产品类对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不需要知道如何创建的细节。

    缺点:由于工厂类集中了所有的创建逻辑,会很复杂导致了全部逻辑都集中到了一个工厂类中,如果需要添加新的产品类,需要改动到工厂类,难免会改错造成不必要的错误。当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求。这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;

    勿在浮沙筑高台 ——个人浅见,难免有误导之处,麻烦请指出。
  • 相关阅读:
    解决PKIX:unable to find valid certification path to requested target 的问题
    Linux 上的常用文件传输方式介绍与比较
    用VNC远程图形化连接Linux桌面的配置方法
    红帽中出现”This system is not registered with RHN”的解决方案
    linux安装时出现your cpu does not support long mode的解决方法
    CentOS SSH配置
    es6扩展运算符及rest运算符总结
    es6解构赋值总结
    tortoisegit安装、clon、推送
    es6环境搭建
  • 原文地址:https://www.cnblogs.com/liufeichn/p/11961655.html
Copyright © 2011-2022 走看看