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

    简单工厂

    由一个工厂对象决定创建出哪一种产品类的实例。

    jdk中的实例 calender

    工厂方法

    定义一个创建对象的接口

    但让实现这个接口的类来决定实例化哪个类

    工厂方法让类的实例化推迟到子类中进行。

    • 使用场景
      1. 创建对象需要大量重复代码
      2. 客户端不依赖于产品类实例如何被创建、实例等细节
      3. 一个类通过其子类来指定创建哪个对象
    • 优点:
      1. 用户只需要关心所需产品对应的工厂,无须关心创建细节
      2. 加入新产品符合开闭原则,提高可扩展性
    • 缺点
      1. 类的个数容易过多,增加复杂度
      2. 增加了系统的抽象性和理解难度

    实例:

    Video抽象类,定义产品

    public abstract class Video {
        public abstract void product();
    }
    
    

    VideFactory抽象类,创建对象

    public abstract class VideFactory {
        public abstract Video getVideo();
    }
    
    

    具体产品JavaVideo

    public class JavaVideo extends Video {
        @Override
        public void product() {
            System.out.println("java视频");
        }
    }
    

    具体产品PythonVideo

    public class PythonVideo extends Video {
        @Override
        public void product() {
            System.out.println("python视频");
        }
    }
    

    实例化JavaVideo,JavaVideoFactoryVideo

    public class JavaVideoFactoryVideo extends VideFactory  {
        @Override
        public Video getVideo() {
            return new JavaVideo();
        }
    }
    
    

    实例化pythonVideo,PythonVideoFactoryVideo

    public class PythonVideoFactoryVideo extends VideFactory {
    
        @Override
        public Video getVideo() {
            return new pythonVideo();
        }
    }
    
    

    测试类

    public class Test {
        public static void main(String[] args) {
            VideFactory videFactory = new JavaVideoFactoryVideo();//父类引用指向子类对象
            Video video = videFactory.getVideo(); //实例化Vido
            video.product();
            VideFactory videFactory1 = new PythonVideoFactoryVideo();//父类引用指向子类对象
            Video video1 = videFactory1.getVideo(); //实例化Vido
            video1.product();
        }
    }
    

    抽象工厂

    jdk中实例:iterator 、URLStreamHandlerFactory等。

  • 相关阅读:
    《Vue.js 2.x实践指南》 已出版
    《H5+移动应用实战开发》已出版
    关于《ASP.NET MVC企业级实战》
    ASP.NET MVC企业级实战目录
    ASP.NET MVC4入门到精通系列目录汇总
    网站服务架构
    ASP.NET MVC搭建项目后台UI框架—1、后台主框架
    webpack介绍—上
    通过一个vue+elementUI的小实例来讲解一下它们是如何使用的
    不要为自己学历低找借口
  • 原文地址:https://www.cnblogs.com/PoetryAndYou/p/11878876.html
Copyright © 2011-2022 走看看