设计模式-创建型模式

1.设计模式之创建型模式分为5类:抽象工厂,构造者,工厂方法,原型,单例 2.创建型模式指的是获取对象的方法,如何通过我们的类之间的结构搭建灵活的,扩展型强的对象获取系统. 3.这五类可以这样来加以说明: 3.1 抽象工厂:它适用于一组产品的更换,也就是说,我们有一系列的产品,他们因为某种风格组成一组形成系统的某种风格.系统可能拥有很多风格,因而每一种风格都应该对应一组不同的产品.我们定义一个抽象工厂,工厂中给出了产生所有抽象产品的定义,每一种风格由它的具体工厂定义完成,因此具体工厂有多少,风格就有多少,也就是我们的产品组就有多少组,每一个具体工厂能做的就是产生具体的产品.当然对于每个抽象产品来说有多少个具体产品,就有多少种风格,他们会分别被各个具体工厂产生.这样就形成了一种对应关系.抽象工厂和抽象产品同时在两个维度扩展,形成一张正交的网络来体现系统的可扩展性,然而对于框架来说,系统的产品数量扩展的难度要大,因为扩展产品的种类,意味着要改变抽象工厂和具体工厂的代码.而系统风格的增多就容易的多,增加一种风格,意味着增加一种具体工厂,对每个产品都生成一个新风格的具体产品,它只是增加而已,并不会修改系统框架的代码. 3.2 构造者:构造者其实是一种委托关系,也就是委托者把一系列的功能或动作交给被委托者来完成.委托者我们称之为指挥者,被委托者就是我们的构造者.构造者是一个抽象类,它定义了所有这一系列动作的原型.它的子类定义所有这些动作,这样形成一种处理风格.当我们传递给指挥者不同的风格处理时,就实现了我们的扩展,每扩展一个构造者,我们就重新定义这一组操作,我们也就定义了一种风格.而指挥者对这一切都不需关心. 构造者和抽象工厂都是实现不同风格的创建模式,他们的区别在于,抽象工厂实现的是一组产品的风格,每个产品都有可能不同,而构造者实现的是对一组操作来说的,如果我们把这一组操作看作是一个产品的操作的话,我们也可以说构造者实现的是单个产品级的风格扩展,而抽象工厂实现的是产品组级的风格扩展. 3.3 工厂方法:创建者提供统一的办法创建某个特定的产品.因此这种模式下产生了抽象的创建者和抽象的产品,每一种具体的创建者都对应一种具体的产品.这听起来和构造者模式简直一样,似的,他们却是很像,一个具体的构建者负责的就是对应一种具体的特定产品.它和构建者基本上有两点区别: a.构建者是有主从之分的,指挥者需保存一个构造者的实例来调用构造者所实现的实际方法.工厂方法提供的是产生独立的产品的接口和产品本生并不产生组合的关系. b.构建者通过一组实现不同的函数来表示扩展的,也就是说它的扩展是函数级的,而工厂方法却是产品级的,也就是说工厂方法里的扩展是以产品为单位的. 3.4 原型:原型并没有象上述三种模式一样强调和产品的关系.它其实只是强调了提供服务的一方,他们通过继承体系而沿袭的同一函数定义.通过这种方式,保证原型的扩展不用惊动框架.其实这种方式在Java中以及很容易做到,因为该语言本身就支持这样一个clone函数,通过该函数,整个继承体系内的对象都可以统一获取到,框架只需要把握对基类的统一引用,子类就可以方便的扩展. 3.5 单例:我想单例就是完全取代了全局变量吧.比起把它称作为模式来说,我更愿意称之为技巧.单例模式的实现有三点: a.一个静态的私有该类的变量 b.一个私有的构造函数 c.一个取得单例的函数,且该函数在第一次被调用的时候构造这个唯一的单例(调用b->赋值a->返回a). 它的好处自然不必多费口舌. 曹想华 读 <设计模式> 2005-4-19 22:15:06
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值