工厂模式

建造者模式和工厂模式的区别

て烟熏妆下的殇ゞ 提交于 2019-12-06 22:14:27
它们目的都是创建一个对象 工厂模式注重的是整体对象的创建方法,而建造者模式注重的是对象的创建过程,创建对象的过程方法可以在创建时自由调用。 看一下建造者模式的例子就明白了: 1 public class EmployeeBuilder 2 { 3 private int id = 1; 4 private string firstname = "first"; 5 private string lastname = "last"; 6 private DateTime birthdate = DateTime.Today; 7 private string street = "street"; 8 9 public Employee Build() 10 { 11 return new Employee(id, firstname, lastname, birthdate, street); 12 } 13 14 public EmployeeBuilder WithFirstName(string firstname) 15 { 16 this.firstname = firstname; 17 return this; 18 } 19 20 public EmployeeBuilder WithLastName(string lastname) 21 { 22 this

工厂设计模式

若如初见. 提交于 2019-12-06 22:04:32
  为什么使用工厂模式:工厂是对对象的构造、实例化、初始化过程的一种封装。从而提供给其他需要对象的地方去使用,从而降低耦合度,提高扩展性和重用性。如果我们手动的在代码中用new关键字去创建对象,那么就会导致对象的诞生过程会绑定在我们的代码中。宿主类与实例化过程强耦合,后期维护会变得非常麻烦。 以造车做比喻:现在需要生产不同品牌的车,每种车的价格和属性不一样。 public class Car { private String colour; private int price; public Car(String colour,int price){ this.colour=colour; this.price=price; } public void run(){ System.out.println("跑"); } } 1、简单工厂:所有的对象实例的创建逻辑都写在一个类里 public class SimpleFactory { public Car create(String type){ Car car=null; switch (type){ case "benchi" : car=new Car("red",200000); break; case "fengtian": car=new Car("black",100000); break; case "wuling"

常用设计模式理解

亡梦爱人 提交于 2019-12-06 10:04:43
不喜勿喷!!!不喜勿喷!!!不喜勿喷!!! 模式实际很多都是使用的(接口)interface特性,即抽象和具体;工厂,命令都是利用抽象的特性; 模式主要是为了代码复用,减少代码耦合,减少硬编码; Spring框架 1. 单例 2. 简单工厂模式:处理对象的创建(继承和多态共存) 其实用的基类,子类的继承和多态;然后加上一个工厂;一般的话都是界面直接调用子类,而现在插入一个工厂,界面跟工厂打交道拿到子类,工厂来处理这些父类,子类; 3. 工厂方法和抽象工厂:简单工厂就是一个工厂,工厂方法就是每个子类都有一个工厂;而抽象工厂是结合工厂方法使用的工厂的工厂;总的来说就是比简单模式多了工厂方法, 4. 代理模式(Proxy):不是很好理解。代理就是一个Java对象代表另一个Java对象来采取行动。 5. 命令模式(Command):其实就是点击事件的回调,匿名接口对象,直接处理某些逻辑的代码块。有点像block;指定某一个方法处理;具体方法的实现是自定义的,每个都不同; 6. 策略模式(Strategy):(继承和多态共存),其实也是接口,继承,多态的结合产物;如算书价格,原价,员工价,vip价,跳楼价等,就是不同的策略表现,其实就是不同的方法实现; 7. 门面模式(Facade):其实是一个整合:讲的是类封装里面封装的是什么东西;整理一个类所要承担的责任。如果没有相应的类,就要建立

4.工厂模式

匆匆过客 提交于 2019-12-06 09:59:30
1.工厂模式可以把对象的创建和使用分离出来,降低代码的耦合性。 (1)简单工厂模式 简单工厂可以实现对象的创建和对象的使用分离,由专门的工厂类负责对象的创建,缺点在于工厂类不够灵活,如果需要增加新的产品需要修改工厂类,而且产品较多时,工厂方法代码逻辑将会非常复杂。 package com.java.dp.factory; /** * @Author lizhilong * @create 2019/12/2 17:27 * @desc 生产线接口 */ public interface BuildLine { void build(); } package com.java.dp.factory; /** * @Author lizhilong * @create 2019/12/2 17:30 * @desc 食品生产线 */ public class FoodLine implements BuildLine { @Override public void build() { System.out.println("-----------生产食品--------------"); } } package com.java.dp.factory; /** * @Author lizhilong * @create 2019/12/2 17:28 * @desc 服装生产线 */

python建造者模式_1

谁都会走 提交于 2019-12-06 06:59:57
建造者模式 与工厂模式的区别: 工厂模式/抽象工厂模式与建造者模式最大的区别在于,工厂模式直接返回一个实例,使用实例的内在方法(各实例间使用同名方法) 工厂模式:调用工厂类直接返回一个可操作性实例 建造者模式:一个和多个对象类(内在方法),由指挥类去组装 来源: https://www.cnblogs.com/kaiseryin/p/11967656.html

工厂模式

走远了吗. 提交于 2019-12-06 04:47:41
前言: 个人阅读工厂模式的时候看了两遍才稍微理解,可能事先阅读过简单工厂模式第一遍粗略阅读工厂模式就感觉有点懵,思维还是停留在简单工厂一大优点:工厂类中包含了必要的判断逻辑使其能动态实例化相关对象,从而除去了客户端和具体实现类之间的依赖,而工厂模式却将类的实例化放到了子类也就是说实例化哪一个对象的逻辑要在客户端去实现而不再是动态生成相关对象,为什么要这么做呢?我们先来看下用工厂模式实现的计算机程序代码: 创建工厂接口: public interface IFactory { //Operation对象是上篇简单工厂模式博文中的Operation Operation CreateOperation(); } 创建具体工厂实现工厂接口: public class AddFactory : IFactory { public Operation CreateOperation() { return new Add(); } } public class SubFactory : IFactory { public Operation CreateOperation() { return new Sub(); } } public class MulFactory : IFactory { public Operation CreateOperation() { return new

javascript 设计模式之工厂(Factory)模式

為{幸葍}努か 提交于 2019-12-05 22:47:28
工厂模式介绍 工厂模式是一个创建型的模式,主要就是创建对象。其中工厂模式又分为简单工厂模式和抽象工厂模式。简单工厂模式是通过工厂方法确定创建 对应类型的对象。抽象工厂模式是通过子类来实现,成员实例化推迟到子类中进行。工厂模式都拥有相同的接口。 工厂模式一般用于:创建相似对象时的重复操作,不知道对象类型提供创建对象的接口。下面我们模式飞机大战游戏中的飞机类型进行工厂模式示例。 工厂模式示例 工厂模式示例如下: /*构建飞机工厂(飞机大战游戏中的飞机)*/ var AirplaneFactory = function(){}; AirplaneFactory .prototype = { createAirplane:function(model){ var plan; switch(model){ case 'General': plan = new GeneralPlan(); break; case 'Boss': plan = new BossPlan(); break; } return plan; } } /*一般炮灰飞机*/ var GeneralPlan = function(){}; GeneralPlan.prototype = { name:'general paln', type:'general', getName:function(){ return

创建类模式大PK

时光总嘲笑我的痴心妄想 提交于 2019-12-05 14:50:02
创建类模式包括工厂方法模式、 建造者模式、 抽象工厂模式、 单例模式和原型模式, 它们都能够提供对象的创建和管理职责。 其中的单例模式和原型模式非常容易理解, 单例模式是要保持在内存中只有一个对象, 原型模式是要求通过复制的方式产生一个新的对象, 这两个不容易混淆。 剩下的就是工厂方法模式、 抽象工厂模式和建造者模式了, 这三个之间有较多的相似性。30.1 工厂方法模式VS建造者模式工厂方法模式注重的是整体对象的创建方法, 而建造者模式注重的是部件构建的过程,旨在通过一步一步地精确构造创建出一个复杂的对象。 我们举个简单例子来说明两者的差异, 如要制造一个超人, 如果使用工厂方法模式, 直接产生出来的就是一个力大无穷、 能够飞翔、 内裤外穿的超人; 而如果使用建造者模式, 则需要组装手、 头、 脚、 躯干等部分, 然后再把内裤外穿, 于是一个超人就诞生了。 纯粹使用文字来描述比较枯燥, 我们还是通过程序来更加清晰地认识两者的差别。30.1.1 按工厂方法建造超人首先, 按照工厂方法模式创建出一个超人, 类图如图30-1所示。图30-1 按工厂方法建造超人类图中我们按照年龄段把超人分为两种类型: 成年超人(如克拉克、 超能先生) 和未成年超人(如Dash、 Jack) 。 这是一个非常正宗的工厂方法模式, 定义一个产品的接口, 然后再定义两个实现, 通过超人制造工厂制造超人。

判断不同设计模式可以使用的关键词

匆匆过客 提交于 2019-12-05 14:33:50
目录 时间安排 真理 MVC使用的设计模式 硬编码 简单工厂 工厂方法 抽象工厂 建造者 原型 单例 适配器 桥接 组合 装饰 外观 享元 代理 职责链 命令 中介者 备忘录 策略 观察者 重点 命令 模式撤销 抽象工厂整套???? 对象类适配器??? 明天带粗鄙 最难的两套卷 时间安排 猜20道选择 40 20min 5简答 20 20min 2大题 40 20min一个 最后检查一下 注意审题,默念题干 真理 方法向父类集中,数据向子类集中 MVC使用的设计模式 p4观察者模式 组合模式 策略 工厂方法 装饰 控制器就是一个中介者模式 硬编码 硬编码是将数据直接嵌入到程序或其他可执行对象的 源代码 中的软件开发实践,与从外部获取 数据 或在运行时生成数据不同。 硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。 硬编码的数据通常表示不变的信息,例如物理常量,版本号和静态文本元素。 另一方面,软编码数据对用户输入,HTTP 服务器 响应或配置文件等任意信息进行 编码 ,并在运行时确定。 +策略模式的描述 TODO 最后的面向对象关系 再复习1.5遍代码 重点复习 命令模式 中介者模式 观察者模式 享元模式 原型模式 抽象工厂 状态模式 备忘录模式 第二章 违背开闭原则的:简单工厂 原型模式深克隆 外观模式

设计模式------工厂模式

爷,独闯天下 提交于 2019-12-05 14:07:45
工厂模式 什么 是 工厂 模式 实现了 创建者和调用者分离 ,工厂 模式分为 简单 工厂、工厂方法、抽象工厂模式 工厂 模式 好处 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替 new 操作的一种模式。 利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。 将选择 实现类、创建对象 统一 管理和 控制 。从而 将 调用 者 跟我们的实现类解耦。 工厂 模式 分类 简单 工厂 模式 简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品类所对应的参数即可。但是工厂的职责过重,而且当类型过多时不利于系统的扩展维护。 public interface Car { public void run(); } public class AoDi implements Car { public void run() { System.out.println("我是奥迪汽车.."); } } public class JiLi implements Car { public void run() { System.out.println("我是吉利汽车..."); } } public class CarFactory { public static Car createCar(String name) { if