简单工厂模式和工厂模式

工厂模式是一种实现个人行为的模式

观察者模式是消息将分发给每一个人

每一个随从者将按照个人的定义对

消息进行处理

简单工厂模式

比如类A是一辆小车,已经实现如下

class Car

{

public:

virtual void Action(){ std::cout<<"Car drive"<<endl;}

}

现在有一辆自行车。利用多态继承A

class Bike : public Car

{

public:

virtual void Action(){ std::cout<<"Bike ride"<<endl;}

}

如果有一辆飞机,可能的代码如下:

class Plane : public Car

{

public:

virtual void Action(){ std::cout<<"Plane fly"<<endl;}

}

但是如果我们使用工厂模式可以实现如下:

class Vehicle

{

public:

virtual void Action() =0;

}

class Car : public Vehicle

{

public:

virtual void Action(){ std::cout<<"Car drive"<<endl;}

}

class Bike : public Vehicle

{

public:

virtual void Action(){ std::cout<<"Bike ride"<<endl;}

}

class Plane : public Vehicle

{

public:

virtual void Action(){ std::cout<<"Plane fly"<<endl;}

}

时间: 2024-11-29 00:20:05

简单工厂模式和工厂模式的相关文章

详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)

园子里关于23种设计模式的博文已经可以说是成千上万.车载斗量.屯街塞巷.不计其数.数不胜数.摩肩接踵.汗牛充栋.车水马龙.门庭若市.琳琅满目直至让人眼花缭乱了.在这样的大环境下之所以来写设计模式类的博文,并不是像一些"非主流"的爱情观那样"宁缺毋滥". 只是其一呢,因为相当于给自己做一个总结,加深一下自己这方面的认识,因为掌握了和把它写出来我感觉后者还可以对技能有一个提升,其二呢是因为最近公司有一个内部的training需要讲设计模式. v写在前面 在这里呢,需要向

【设计模式】简单工厂模式与策略模式

[前言]今天再次把<大话设计模式>一书拿出来翻了一下,对于前面一节初探中讲诉的简单工厂模式和策略模式,有了更好的理解.按照习惯,还是继续梳理梳理. [简单工厂模式]:封装(数据+算法) 简单工厂模式的特点: 每一个子类最好能做到职责单一,将每一个需要涉及的数据和算法,封装成一个独立的类. 工厂模式中的工厂类其实起到了一个调度者的角色: 2.1 工厂类可以达到将实现具体逻辑的子类隐藏的效果,只需要将自己暴露调用实例化的接口,根据工厂类提供的对外方法,在内部实现逻辑判断,并最后实例化具体的子类对象

简单工厂模式,工厂方法模式,抽象工厂模式

简单工厂模式.抽象工厂模式.工厂方法模式,这三种工厂模式都属于设计模式中的创建型模式,它们在形式和特点上也多少有些相似,其最终目的都是帮我们将对象的实例化部分取出来,进而优化系统架构,增强系统的扩展性,也就是说更好的体现开放封闭原则. 简单工厂模式: 概念: 简单工厂模式是类的创建模式,又叫做静态工厂方法模式,是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例,涉及到工厂角色.抽象产品角色以及具体产品角色. 结构图: 分析: 一: 简单工厂类是整个模式的关键所在,包含了必要的逻辑判断,根据

PHP简单工厂模式、工厂方法模式和抽象工厂模式比较

PHP工厂模式概念:工厂模式是一种类,它具有为您创建对象的某些方法.您可以使用工厂类创建对象,而不直接使用 new.这样,如果您想要更改所创建的对象类型,只需更改该工厂即可.使用该工厂的所有代码会自动更改. 根据抽象程度不同,PHP工厂模式分为:简单工厂模式.工厂方法模式和抽象工厂模式 简单工厂模式: /******代码在原文还是git上都有osgit地址 https://git.oschina.net/mjw/pattern.git  *******/ /** *简单工厂模式与工厂方法模式比较

简单工厂模式(静态工厂方法模式)【设计模式】

定义:提供一个创建实例的功能,客户端使用者无需关心实例的具体实现.被创建实例可以是接口.抽象类,也可以是具体的类.它又称为静态工厂方法(Static Factory Method)模式 简单工厂模式的作用,优点:为客户端屏蔽所需要的实例的具体实现,客户端只需关注某个接口便可,无需关注实现.具体实现被封装起来:客户端和具体实现解耦,客户端只需关注接口,接口的实现变化对客户端没有影响.总结起来,就是封装功能,封转实例的具体实现:解耦功能,接口实现的变化影响不了客户端. 例子: 例子1:不带参数 没有

iOS设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂的生活场景,卖早点的小摊贩,他给你提供包子,馒头,地沟油烙的煎饼等,小贩是一个工厂,它生产包子,馒头,地沟油烙的煎饼.该场景对应的UML图如下所示: 图1:简单工厂模式UML图 简单工厂模式的参与者: 工厂(Factory)角色:接受客户端的请求,通过请求负责创建相应的产品对象. 抽象产品(Abstract Product)角色: 是工厂模式所创建对象的父类或是共同拥有的接口.可是抽象类或接口. 具体产品(Conc

设计模式- 简单工厂模式、工厂方法模式及其比较

简单工厂模式及实例 前言工大有许多同学是做java的,大家都知道java最大的优点是它的完全OO化和它在多年的发展过程中吸收和总结了许多先进的框架与模式,其中工厂模式就是最常用的模式之一.下面我想将我在学习和实践过程中对工厂模式的认识与了解介绍给大家.由于笔者能力限制,在实践中也没参与过什么大的项目,笔者参与过的项目用到的工厂模式主要是简单工厂模式(Simple Factory)和工厂方法模式(Factory Method),所以笔者在本文主要介绍的是这两种模式.准备知识在OO设计领域,我们知道

设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)

原文地址:http://blog.chinaunix.net/uid-25958655-id-4243289.html 简单工厂模式 当需要加法类的时候,调用工厂类的CreateOperate(),要指定制造的Product 例如在大话设计模式P11给的运算工厂例子: public static Operation createOperate(string operate) { Operation oper = null; 12 switch (operate) { case "+":

工厂模式,简单工厂模式,抽象工厂模式三者有什么区别

工厂模式,也叫做说虚构造器,在简单工厂中间插入了一个具体产品工厂,这个工厂知道产品构造时候的具体细节,而简单工厂模式的产品具体构造细节是在一个个if/else分支,或者在switch/case分支里面的.工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面.在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码.而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加if/else分支,或者增加一个case

简单工厂,抽象工厂,工厂模式三者的对比

简单工厂,抽象工厂,工厂模式三者的对比 作者: TindleWei 博客: http://blog.csdn.net/mennoa(转载请说明出处) GitHub: https://github.com/TindleWei 我想大家都熟悉工厂模式,但是要分清简单工厂,抽象工厂,工厂模式可能就没那么容易了.所以我查看了许多资料以及设计模式关于工厂模式的介绍,下面来总结一下. 前言 简单工厂,抽象工厂,工厂模式都属于创建型模式. 该模式的特点是抽象了实例化的过程.它们帮助了一个系统独立于如何创建.组