重构——53以工厂函数取代构造函数(Replace Constructor with Factory Method)

以工厂函数取代构造函数(Replace Constructor with Factory Method)

你希望在创建对象时不仅仅是做简单的构造动作;将构造函数替换为工厂函数

一、动机

在派生子类的时候以工厂函数取代类型码

二、做法

1、新建一个工厂函数,让它调用现有的构造函数

2、将调用构造函数的代码改为调用工厂函数

3、每次替换后,编译并测试

4、将构造函数声明为private

5、编译

时间: 2024-10-24 17:09:24

重构——53以工厂函数取代构造函数(Replace Constructor with Factory Method)的相关文章

javascript设计模式之对象工厂函数与构造函数详解_基础知识

下面通过文字详解加代码分析的方式给大家分享下javascript设计模式之对象工厂函数与构造函数的相关知识. 概述使用对象字面量,或者向空对象中动态地添加新成员,是最简单易用的对象创建方法.然而,除了这两种常用的对象创建方式,JavaScript还提供了其他方法创建对象.1).使用工厂函数创建对象我们可以编写一个函数,此函数的功能就是创建对象,可将其. 概述 使用对象字面量,或者向空对象中动态地添加新成员,是最简单易用的对象创建方法. 然而,除了这两种常用的对象创建方式,JavaScript还提

重构——47以明确函数取代参数(Replace Parameter with Explicit Methods)

以明确函数取代参数(Replace Parameter with Explicit Methods) 你有一个函数,其中完全取决于参数值而采取不同的行为:针对该参数的每一个可用值,建立一个独立函数 一.动机 1.根据不同参数值作出不同的行为,那么就应该使用本项重构 2.接口更加清楚 二.做法 1.针对参数的每一种可能性,新建一个明确函数 2.修改表达式的每个分支,使其调用合适的新函数 3.修改每个分支后,编译并测试 4.修改原函数的每一个被调用点,改而调用上述的某个合适的新函数 5.编译,测试

重构——49以函数取代参数(Replace Parameter with Methods)

以函数取代参数(Replace Parameter with Methods) 对象调用某个参数,并将结果作为参数,传递给另一个函数,而接受该参数的函数本身也能够调用前一个函数:让参数接受者去除该项参数,并直接调用前一个参数 一.动机 如果函数可以通过其他途径获得参数值,那么它就不应该通过参数取得该值 二.做法 1.如果有必要,将参数的计算过程提炼到一个独立的函数中 2.将函数本体内引用该参数的地方改为调用新建的函数 3.每次替换后,编译并测试 4.全部替换完成后,使用Remove Parame

[译] ES6+ 中的 JavaScript 工厂函数(第八部分)

本文讲的是[译] ES6+ 中的 JavaScript 工厂函数(第八部分), 原文地址:JavaScript Factory Functions with ES6+ 原文作者:Eric Elliott 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:lampui 校对者:IridescentMia.sunui Smoke Art Cubes to Smoke - MattysFlicks - (CC BY 2.0) 注意:这是"软件编写"系

js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)_javascript技巧

在上篇文章给大家介绍了javascript面向对象基础,本篇文章继续深入学习javascript面向对象,JS的语法非常灵活,简单的对象创建就有好几种不同的方法.这些过于灵活的地方有时候确实很让人迷惑,那么今天我们就来梳理一下JS中常用的创建对象的几种方法吧. 前言 虽然使用 Object构造函数 或者使用 对象字面量 可以很方便的用来创建一个对象,但这种方式有一个明显的缺点:使用一个接口创建多个对象会产生很多冗余的代码.因此为了解决这个问题,人们开始使用以下几种方式来常见对象. 工厂模式 该模

《JavaScript应用程序设计》一一3.8 工厂函数

3.8 工厂函数 使用对象字面量带来的便捷是显而易见的,不过它们无法封装私有数据.封装的概念之所以在编程中具有价值,是因为它将程序内部的实现细节对使用者做了隐藏.回忆一下"四人帮"在面向对象设计模式一书中首章的描述,"面向接口编程,而不是面向实现编程",封装将这一编码原则在代码中贯彻,即对使用者隐藏实现细节.不过,经过前面几节的介绍,你已经对构造函数的弊病有所了解,并知晓如何去规避.下面介绍一种构造函数的替代方案:工厂函数.工厂函数被用来构建并实例化对象,使用它的目

python3中内建函数与工厂函数的关系

问题描述 python3中内建函数与工厂函数的关系 python核心编程书中提到,由于类型与类的整合,一些内建函数变为了工厂函数,两者的关系是什么 解决方案 被重新封装了通过工厂函数来创建类的实例化,可以方便修改,对外函数不变,内部由于变化不影响使用 明显的例子: Timer 定时器的工厂函数def Timer(*args **kwargs):""Factory function to create a Timer object. Timers call a function afte

C++:通过私有(private)继承复用类实现工厂函数详解

通过接口类(interface class), 实现工厂函数, 可以复用(reuse)已有类, 重写实现接口. 如: 接口类: IPerson; 复用类: PersonInfo; 实现类: CPerson; 工厂函数: DatabaseID askUserForDatabaseID(); std::shared_ptr<IPerson> makePerson(DatabaseID personIndetifier); 可以通过私有继承复用类PersonInfo,公有继承接口类IPerson,

JavaScript中的普通函数与构造函数比较

 问题 什么是构造函数? 构造函数与普通函数区别是什么? 用new关键字的时候到底做了什么? 构造函数有返回值怎么办? 构造函数能当普通函数调用吗? 以下是我的一些理解,理解错误的地方恳请大家帮忙指正,谢谢! this this永远指向当前正在被执行的函数或方法的owner.例如: 1 2 3 4 5 function test(){ console.log(this); } test(); //Window {top: Window, window: Window, location: Loc