zoukankan      html  css  js  c++  java
  • 设计模式:工厂方法模式

    一.

      在工厂方法模式种,不再由单一的工厂类生产产品,而是由工厂类的子类实现具体产品的创建。当增加一个产品时,只需要增加一个相应的工厂类的子类,实现生产这种产品,便可以解决简单工厂生产太多产品导致其内部代码臃肿的问题。

    二.通用写法

    抽象产品:

    public interface IProduct {
        public void doService();
    }
    

     实现抽象产品:

    public class ProductA implements IProduct {
        @Override
        public void doService() {
            System.out.println("ProductA");
        }
    }
    public class ProductB implements IProduct {
        @Override
        public void doService() {
            System.out.println("ProductB");
        }
    }
    

    抽象工厂:

    public interface IFactory {
        public IProduct produce();
    }
    

    实现抽象工厂:

    public class FactoryA implements IFactory {
        @Override
        public IProduct produce() {
            return new ProductA();
        }
    }
    
    public class FactoryB implements IFactory {
        @Override
        public IProduct produce() {
            return new ProductB();
        }
    }
    

     测试:

    public class Test {
        public static void main(String[] args) {
            IFactory factory = new FactoryA();
            IProduct product = factory.produce();
            product.doService();
        }
    }
    

     

    3.uml类图

     该模式的缺点:

    1.类的个数过多,增加复杂度

    2.抽象产品只能生产一种产品,可以用抽象工厂模式解决

    3.增加系统的抽象性和理解难度。

  • 相关阅读:
    lintcode-453-将二叉树拆成链表
    qcow2虚拟磁盘映像转化为vmdk
    wiki
    oracle
    mysql配置记录
    consul命令记录
    Prometheus监控elasticsearch集群(以elasticsearch-6.4.2版本为例)
    centos7修改网卡名称为eth0
    linux下将普通用户加入到docker组,使它可以运行docker命令
    CentOS配置history记录每个用户执行过的命令
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/13581099.html
Copyright © 2011-2022 走看看