工厂模式(转)

 

今天跟大家分享一下我对工厂系列模式的理解,主要包括简单工厂、工厂方法、抽象工厂模式。

场景一: 话说苹果和小米是两大手机巨头,他们各自推出的经典手机是IPhone手机系列和小米手机系列。 两家公司在手机的整个开发过程当中,都只负责产品的研发和设计工作,而手机制造则委托给手机工厂。

设计模式中有一个叫面向抽象编程的原则,在程序中体现为使用接口或者抽象类。下面我们将苹果和小米手机的共同特征和 行为来做一个抽象,这里我们使用抽象类,如下:

由于手机都有名字、型号、价格等等一些特征,所以我们可以将这些共有的行为和特征抽象到基类当中,避免子类中出现不必要的冗余代码。
接下来我们就用IPhone和XiaoMi手机两个类继承基类,在基类中实现各自独有的行为和特性,代码如下:

http://www.cnblogs.com/huangzelin/p/4270778.html

时间: 2024-09-17 23:37:41

工厂模式(转)的相关文章

《设计模式》学习笔记3——工厂模式

定义 工厂模式实际上有广义和狭义的分别,广义的工厂模式指的是简单工厂模式.工厂方法模式.抽象工厂模式三个,而狭义的工厂模式就是这里的工厂方法模式,一般情况下如果有人直接说工厂模式,多半指的就是工厂方法模式.工厂方法模式引用书中的定义如下: 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个 类实例化.工厂方法模式让一个类的实例化延迟到其子类.工厂方法模式又简称为工厂模式 (Factory Pattern),又可称作虚拟构造器模式(Virt

《设计模式》学习笔记2——简单工厂模式

定义 简单工厂模式并不属于GoF(Gang of Four四人组)23中设计模式,有些地方的解释说因为简单工厂模式太简单,所以23中设计模式就没有单独列出. 但是简单工厂模式在实际的应用中却很常用,因此在刘伟老师的<设计模式>一书中就还是列了出来. 简单工厂模式引用书中的定义如下: 简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类.因为在简单工厂模式中用于创建实例的方法是静态(static)方法

抽象工厂模式

又碰到好文章了,忍不住就想转,这种风格幽默清新的文章很有借鉴意义.转自:http://www.cnblogs.com/cbf4life/archive/2009/12/23/1630612.html 抽象工厂模式 9.1 女娲的失误      我们在上一章节讲了女娲造人的故事.人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱.仇恨.喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,哇K!忘记给人类定义性别了,那怎么办?抹掉重来,于是人类经过一次大洗礼,所有的人种都消

C# 设计模式----抽象工厂模式

原文地址:C#设计模式(4)--抽象工厂模式 一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性.但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在的工厂都多元化了,一个工厂创建一系列的产品,如果我们要设计这样的系统时,工厂方法模式显然在这里不适用,然后抽象工厂模式却可以很好地解决一系列产品创建的问题,这是

javascript创建对象之工厂模式(一)

工厂模式在软件工程里面是一种比较常见的设计模式了.这种模式抽象了创建具体对象的过程. 上代码: function createHuman(name,sex) {             var obj = new Object();             obj.name = name;             obj.sex = sex;             obj.say = function () {                 alert(this.name);        

php设计模式 — 抽象工厂模式

在什么情况下应当使用抽象工厂模式: 1.一个系统不应当依赖于产品类实例如何被创建.组合和表达的细节,这对于所有的形态的工厂模式都是重要的. 2.这个系统的产品有多余一个的产品族,而系统只消费其中某一个族的产品. 3.同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来. 4.系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现.     案例1: 还是以农场为例. 我们的农场分了多个产品线,一个是专门卖北方的蔬菜水果.一个专门卖南方的蔬菜水果.大家可

Java模式--工厂模式的简单用例

  工厂模式是J2EE核心模式中较简单的一种,听说Jive论坛中对数种设计模式有着广泛的应用,工厂模式也包括其中,本人就从该模式起步,希望有一天能对各种设计模式运用自如. 现给出一简单用例,模拟一火腿(Ham)生产工厂,工厂可以生产数种类型的Ham,那么在创建了一个工厂实例后,只需要告诉它请你生产何种Ham,它就会给你生产出来:package test; interface Ham { //定义接口,用于辅助实现工厂模式    void show();//由Ham工厂生产出的各种Ham将有sho

Javascript工厂模式:函数createPerson()

文章简介:工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.考虑到在ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节. 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.考虑到在ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节,如下面的例子所示: function createPerson(name, age, job) { var o =

《java与模式》----创建模式系列工厂模式、单态模式精讲

创建 创建模式-----Creation  Pattern 创建模式是对类实例化过程的抽象. 一些系统在创建对象的时候需要动态的决定怎样创建对象.创建哪些对象.以及如何组合,表示这些对象.创建模式描述了怎样构造和封装这些动态的决定. 创建模式又分类的创建模式和对象的创建模式. l         类的创建模式:类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到哪些具体类的信息,并隐藏了这些类的实例是如何被创建的和放在一起的.. l         对象的创建模式:对象的创建模

PHP设计模式之工厂模式

工厂设计模式: 提供获取某个对象的新实例的一个接口, 同时使调用代码避免确定实际实例化基类的步骤. <?php    //基础标准CD类    class CD {                public $tracks = array();        public $band   = '';        public $title  = '';                public function __construct() {}                public