---恢复内容开始---

对于所有的设计模式来说,其本质是哪里变化封装哪里。寻找变化点,没有万能的模式,只有适合情况的应用

工厂模式从简单工厂开始演化

1.简单工厂的主要作用在于从源头开始封装实例化,也就是new操作,这么做的最大好处在于可以由创建者去控制使用者去使用什么实例,并且对于后期的修改,只需在工厂创建处进行处理,隔离了部分的改动,其本质就是把new进行方法化。

问题:不能应对不同系列的对象(相互依赖的系列对象),因为工厂本身也可能是个变化源。

2.为了解决系类对象的问题,使用抽象工厂的模式,把工厂的变化隔离开来,不依赖于具体的实现,而是依赖于抽象和接口,实际上也可以在系类对象处使用静态工厂来创建不同系类对象的工厂

问题:不能解决新对象的需求变动

3.可以和工厂方法模式组合来应对“新对象”的需求

---恢复内容结束---

工厂模式的认识(GOF23)的更多相关文章

  1. Java设计模式学习笔记(二) 简单工厂模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 正文开始... 1. 简介 简单工厂模式不属于GoF23中设计模式之一,但在软件开发中应用也较为 ...

  2. C#设计模式学习笔记:简单工厂模式(工厂方法模式前奏篇)

    本笔记摘抄自:https://www.cnblogs.com/PatrickLiu/p/7551373.html,记录一下学习过程以备后续查用. 一.引言 简单工厂模式并不属于GoF23里面的设计模式 ...

  3. 【GOF23设计模式】工厂模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_简单工厂模式详解.面向对象设计原则.开闭原则.依赖反转原则.迪米特法则  没有工厂模式的情况 package com.te ...

  4. Java中的GOF23(23中设计模式)--------- 工厂模式(Factory)

    Java中的GOF23(23中设计模式)--------- 工厂模式(Factory) 在给大家介绍工厂模式之前,我想和大家聊聊面向对象的那点事,在这里,引入三个概念. 开闭原则(Open Close ...

  5. GoF23:工厂模式(Factory)

    目录 GoF23:工厂模式(Factory) 工厂模式三种模式 简单工厂模式(静态工厂模式) 工厂方法模式 抽象工厂模式 举例说明 代码实现 GoF23:工厂模式(Factory) 核心本质: 实例化 ...

  6. GOF23设计模式之工厂模式

    -实现了创建者和调用者的分离 -面向对象设计的基本原则: ·OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭 ·DIP(依赖倒转原则,Depen ...

  7. 【GOF23设计模式】--工厂模式

    工厂模式: 实现了创建者调用者的分离 详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 面向对象设计的基本原则: OCP(开闭原则,Open-Closed Principle):一个软件的实体应当 ...

  8. GOF23设计模式之工厂模式(factory)

    一.工厂模式概述 实现了创建者和调用者的分离 (1)分类 ①简单工厂模式 虽然某种程度不符合设计原则,但实际使用最多. ②工厂方法模式 不修改已有类的前提下,通过增加新的工厂类实现扩展. ③抽象工厂模 ...

  9. GOF23种设计模式-工厂模式

    • 工厂模式: – 实现了创建者和调用者的分离. – 详细分类: • 简单工厂模式 • 工厂方法模式 • 抽象工厂模式 • 面向对象设计的基本原则: – OCP(开闭原则,Open-Closed Pr ...

随机推荐

  1. elasticsearch 5.6.4自动创建索引与mapping映射关系 +Java语言

    由于业务上的需求 ,最近在研究elasticsearch的相关知识 ,在网上查略了大部分资料 ,基本上对elasticsearch的数据增删改都没有太大问题 ,这里就不做总结了  .但是,在网上始终没 ...

  2. 实验二 输出“Hello Word!”,测试主方法的输入参数和心得体会

    实验二 一.输出“Hello World!” 1.首先打开eclipse,如下图所示. 2.选择一个工作空间,如下图所示. 3.接下来,点击[Java项目]创建一个Java项目,如下图所示. 4.然后 ...

  3. vue封装插件并发布到npm上

    vue封装插件并发布到npm上 项目初始化 首先,要创建项目,封装vue的插件用webpack-simple很合适,vue init webpack-simple 项目名称此命令创建我们的项目的目录, ...

  4. yum安装软件所在目录的查询

    rpm -qa|grep 软件名 rpm -ql 上面语句返回的内容

  5. UNIX基础概念

    UNIX基本概念 进程 从用户观点来看:进程是程序的一个执行实例. 从UNIX系统内部来看,是为运行程序提供执行环境的实体,是系统进行资源分配和调度运行的一个单位. 进程有三个特点: 1)进程有一个控 ...

  6. JSONP-跨域读取数据

    页面代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <tit ...

  7. python学习,day3:函数式编程,*arge,**kwargs

    对于不固定长度的参数,需要使用*arge,**kwargs来调用,区别是*arge是转换为元组,而kwargs转化为字典 # coding=utf-8 # Author: RyAn Bi def te ...

  8. Java8内存结构—永久代(PermGen)和元空间(Metaspace)

    本文转载 作者:liuxiaopeng 博客地址:https://www.cnblogs.com/paddix/p/5309550.html 一.JVM 内存结构 根据 JVM 规范,JVM 内存共分 ...

  9. Homebrew设置代理

    在终端上输入环境变量: export ALL_PROXY=socks5://127.0.0.1:1080 注意:这个只在当前生效,关闭终端就不行了. 原理:本身使用curl进行访问,所以通过环境变量能 ...

  10. PHP将字符串写入txt文件

    function writelog($str) { $open=fopen("e:\log.txt","a" ); fwrite($open,$str); fc ...