简单工厂模式

简单工厂模式和策略模式的差别

早过忘川 提交于 2020-02-21 07:05:51
直接上代码: 简单工厂模式: ------------------------------ 一个抽象类 -------------------------- abstract class AbsClass { //抽象方法:提供一些列的算法操作 public abstract void acceptCash(string org); } ------------------------------ 2个实现类 -------------------------- //继承自抽象类 class A :AbsClass { //详细方法:提供一些列的算法操作 public override double acceptCash(string org) { Console.WriterLine("A类方法"); } } //继承自抽象类 class B :AbsClass { //详细方法:提供一些列的算法操作 public override double acceptCash(string org) { Console.WriterLine("B类方法"); } } ------------------------------ 简单工厂类 -------------------------- //现金收取工厂 class CashFactory { //依据条件返回对应的对象

工厂设计模式

99封情书 提交于 2020-02-17 18:32:13
简单工厂模式:   简单工厂模式又叫做静态工厂(Static Factory)模式,但不属于23种GOF设计模式之一。简单工厂模式是根据传入的参数决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单但最实用的模式。 下面以生产车的工厂案例来展示简单工厂模式: //抽象产品类 public interface Car { void run(); } //具体产品类 public class Audi implements Car { @Override public void run() { System.out.println("奥迪runing"); } } //具体产品类 public class Byd implements Car { @Override public void run() { System.out.println("比亚迪runing"); } } //生产车的工厂类 public class CarFactory { public static Car createCar(String type) { if("奥迪".equals(type)) { return new Audi(); }else if ("比亚迪".equals(type)) { return new Byd(); }else { return null; } } } /

大话设计模式之简单工厂模式

感情迁移 提交于 2020-02-17 18:27:00
面向对象:封装、继承、多态,使得程序的耦合度降低,代码可以复用。 业务的封装:让业务逻辑与界面逻辑分开,耦合度降低。 简单的计算器程序 1)封装和继承 //定义一个Operation类 public class Operation { //操作数 private double NumberA {get;set;} private double NumberB {get;set;} private virtual double GetResult() { double result =0; return result; } } //定义+、-、*、/操作方法 public class OperationAdd:Operation { public override double GetResult() { double result =0; result = NumberA + NumberB; return result; } } public class OperationSub:Operation { public override double GetResult() { double result =0; result = NumberA - NumberB; return result; } } public class OperationMul:Operation {

设计模式学习笔记三:简单工厂(Simple Factory)

青春壹個敷衍的年華 提交于 2020-02-17 11:34:02
开始学习创建型模式,这些模式的使用是面向接口编程的必然结果,面向接口编程要求针对接口,而不是具体的实现,这样程序可以不用关心具体使用实现也能做到实现的互换。尽管编程是面向接口,但执行是操作需要实例化后的对象,而实例化必须要针对具体的类。如果直接实例化,则破坏了面向接口编程的原则。解决的方法就是通过一个专门实例化的类来获得具体的对象,通常我们将这个类成为“工厂”,将与实例化相关的模式成为“创建型模式”。 1.概述 简单工厂(Simple Factory) 的作用是实例化对象,而不需要客户了解这个对象属于那个具体的子类。在GOF的设计模式中并没有简单工厂,而是将其作为工厂方法的一个特例加以解释, 简单工厂就是参数化的工厂方法 。该模式是通过switch分支(也有用if判断的),来决定最终生成哪一个对象的,而这个switch分支语句,嵌在一个静态方法中,这个改装就是简单工厂。 2.实例 1).大话设计模式中的计算器用简单工厂实现。 结构图: 代码: Operation基类: Code public class Operation { private double _numbleA = 0 ; private double _numbleB = 0 ; public double NumbleA { get { return _numbleA; } set { _numbleA =

设计模式------工厂模式和抽象工厂模式

给你一囗甜甜゛ 提交于 2020-02-15 01:11:28
一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品; 2)工厂方法模式(Factory Method):又称为多形性工厂; 3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品; 这三种模式从上到下逐步抽象,并且更具一般性。 GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。 二、简单工厂模式 简单工厂模式又称 静态工厂方法模式 。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。 先来看看它的组成: 1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。 2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口

设计模式------工厂模式和抽象工厂模式

孤人 提交于 2020-02-14 19:17:37
一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品; 2)工厂方法模式(Factory Method):又称为多形性工厂; 3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品; 这三种模式从上到下逐步抽象,并且更具一般性。 GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。 二、简单工厂模式 简单工厂模式又称 静态工厂方法模式 。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。 先来看看它的组成: 1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。 2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口

设计模式-工厂三姐妹

陌路散爱 提交于 2020-02-14 00:12:17
首先明确什么是工厂模式: (1) 可以使代码结构清晰,有效地封装变化。在编程中,产品类的实例化有时候是比较复杂和多变的,通过工厂模式,将产品的实例化封装起来,使得调用者根本无需关心产品的实例化过程,只需依赖工厂即可得到自己想要的产品。 (2) 对调用者屏蔽具体的产品类。如果使用工厂模式,调用者只关心产品的接口就可以了,至于具体的实现,调用者根本无需关心。即使变更了具体的实现,对调用者来说没有任何影响。 (3) 降低耦合度。产品类的实例化通常来说是很复杂的,它需要依赖很多的类,而这些类对于调用者来说根本无需知道,如果使用了工厂方法,我们需要做的仅仅是实例化好产品类,然后交给调用者使用。对调用者来说,产品所依赖的类都是透明的。 而且,工厂模式可以分为简单工厂模式、工厂方法模式、抽象工厂模式。下面是对这三种工厂模式的对比和分析。 【简单工厂模式】 1.概念: 从设计模式的类型上来说,简单工厂模式 是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GDF 设计模式之一。简单工厂 模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。简单的说, 简单工厂模式更多的使用了面向对象编程中的多态性,基类的引用可以指向派生类,并且调用派生的方法,即多态性。 2.如图所示

设计模式 => 简单工厂模式 工厂方法模式 上车

爷,独闯天下 提交于 2020-02-11 12:40:56
创造性设计模式 => 工厂模式 => 工厂方法模式上车 工厂模式的定义: 工厂模式定义创造对象的接口, 但是让子类去真正的实例化, 也就是工厂方法将类的实例化延迟到子类 光看文字可能其实没什么感觉, 那笔者来举个栗子 相信飞机大战这个游戏大家都有玩过, 里面会有很多中不同的飞机, 每个飞机的能力都不太一样但是他们也有相似的地方, 拿到前端中来说如果要我们写一个飞机大战, 我们如何来创建这些飞机呢? // 如果是新手的话, 应该是这样创建 var smallPlane = { color : 'red' , size : 500 , power : 0.5 , blood : 100 , touch : function ( ) { this . blood -= 50 ; if ( this . blood == 0 ) { console . log ( 'game over' ) ; } } } var bigPlane = { color : 'blue' , size : 700 , power : 0.7 , blood : 150 , touch : function ( ) { this . blood -= 50 ; if ( this . blood == 0 ) { console . log ( 'game over' ) ; } } } //

大白话简单工厂模式 (Simple Factory Pattern)

十年热恋 提交于 2020-02-08 09:17:16
大白话简单工厂模式 (Simple Factory Pattern) 从买车经历说起 毕业两年,码农张小两口无法忍受挤公交,凌晨起床抢火车票的痛苦,遂计划买车。逛了多家4S店,最终定下日产某车型的轿车。4S店接受订单后,向工厂说明车型,工厂随后进行汽车制造,运输到4S店中再到了小两口的手上,小两口终于成了有车一族。 仔细分析,4S销售模式即为典型的简单工厂模式。下面从代码的角度进行分析。 无工厂模式 首先,我们先分析4S店最初的模式(企业个人作坊阶段,无工厂)。4S店卖车首先要有车,这里只取日产部分车型逍客,轩逸和天籁。 代码片段1 日产车父类,所有车型都继承此类。 /** * 日产车 * @author coderzcr */ abstract class NissanCar { String name ; void printCar ( ) { System . out . println ( name + "汽车已制造完成" ) ; } } 代码片段2 车型:逍客 /** * 车型:逍客 * @author coderzcr */ class Xtrail extends NissanCar { Xtrail ( ) { this . name = "逍客" ; } } 代码片段3 车型:轩逸 /** * 车型:轩逸 * @author coderzcr */ class

C#设计模式三(简单工厂类)

南笙酒味 提交于 2020-02-07 18:41:15
C#设计模式之简单工厂类 一、引言 如果将类比作是产品的话,那么new一个对象就是生产出一个产品。 现在有若干个类需要我们进行选择性的生产,那么这时就会引出一个概念叫做工厂。 何为工厂? 工厂就是能够生产出各种产品的地方,生产需求根据客户的要求生产。在程序中简单的来说就是,可以指定一个工厂new出一个指定的类来。其他没有选择到的类不用new,以防资源泄露。整个new的过程全部在工厂内部完成,客户无需干涉。 二、简单工厂应用的场景 简单工厂非常合适应用在同一个数据,不同的操作上。例如计算器。 如果想要对两个数进行加/减/乘/除运算时。因为两个数都是一样的,而方法可以选择不同的。这类情况下,没必要将加减乘除四个类全部创建实例,可以通过工厂来选择新建需要的那个,然后进行相关计算。 三、简单工厂模式实例 //操作基本规范,此为父类以可看做是标准规范的接口 public class Operation { private double _numberA = 0 ; private double _numberB = 0 ; public double NumberA { get { return _numberA ; } set { _numberA = value ; } } public double NumberB { get { return _numberB ; } set {