工厂模式(Factory)

  • 依赖倒置原则(Dependency Inversion Principle):依赖抽象,不要依赖具体类。
  1. 变量不可以持有具体类的引用。(如果使用new,就会持有具体类的引用。可以改用工厂来避开这样的做法。)
  2. 不要让类派生自具体类。(如果派生自具体类,就会依赖具体类。请派生自一个抽象(接口或抽象类))
  3. 不要覆盖类中已实现的方法。
  • 要点
  1. 所有的工厂都是用来封装对象的创建
  2. 工厂方法使用继承:把对象的创建委托给子类,子类实现工厂方法来创建对象。
  3. 抽象工厂使用对象组合:对象的创建被实现在工厂接口所暴露出来的方法中。
  4. 所有工厂模式都通过减少应用程序和具体类之间的依赖促进松耦合。

1. 简单工厂


2. 工厂方法模式

  ——定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。


3. 抽象工厂模式

  ——提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

最新文章

  1. WebGL与three.js
  2. Spring学习记录(三)---bean自动装配autowire
  3. 20145304 第五周Java学习报告
  4. Oracle 精简绿色版客户端的配置
  5. 基于RSA securID的Radius二次验证java实现(PAP验证方式)
  6. GreenOpenPaint的实现(一)基本框架
  7. clear-fix清除浮动的两种写法
  8. linux系统下安装jdk、tomcat、mysql、redis
  9. 做移动端电子签名发现canvas的 一些坑
  10. 小强学渲染之Unity Shader编程HelloWorld
  11. Codeforces Round #541 (Div. 2) (A~F)
  12. 论文阅读(XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network)
  13. SQL Developer连接Oracle出现“IO 错误:Undefined Error”
  14. Doors Breaking and Repairing CodeForces - 1102C (思维)
  15. 13. 字符串转为json对象或json数组
  16. [转帖] 常见的cmd命令
  17. CentOS 安装Passenger
  18. ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge 状压DP
  19. SpringMVC XXX-servlet.xml ApplicationContext.xml
  20. Vue——解决[Vue warn]: Invalid prop: custom validator check failed for prop "index". found in错误

热门文章

  1. mysql索引的应用场景以及如何使用
  2. Setup "EQGRP_Lost_in_Translation" Of NAS
  3. 浅谈iOS开发中多语言的字符串排序
  4. Python多继承解析顺序的C3线性算法流程解析
  5. 【算法笔记】B1051 复数乘法
  6. TD-LTE技术原理与系统设计
  7. c# 如何得到一个字符的ASCII码
  8. [目录]hybrid app 开发实战(基于ionic,cordova,angularjs)
  9. MySQL使用内置函数来进行模糊搜索(locate()等)
  10. Linux 命令 -- chmod