zoukankan      html  css  js  c++  java
  • 谁是面向对象设计中的霸主?(上)

    版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/u010929604/article/details/26051679

             在面向对象的世界里,设计模式从来就没有最好最强的,各个模式从来就谁也不服谁。彼此明争暗斗,未曾善罢甘休。

    今天。连同简单工厂模式在内的24个设计模式齐聚中原,霎时间。乌云密布。杀气冲天,面向对象的世界里要迎来一场浩劫,血雨腥风,在所难免

             在资格赛中,来自工厂家族的简单工厂模式首先被灭掉了,其致命的失误在于简单工厂模式根本不符合开放—封闭原则,因此慘遭灭门也是不足为怪的。然而让人欣慰的是,工厂家族的另两个派系工厂方法模式和抽象工厂模式都晋级了小组赛,而且被分在了同一组。这样看来他们不得不自相残杀,其命运令人堪忧啊。

             我们来看看各个模式的分组情况:首先是创建型模式小组。分别包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式5个派系,其次是结构型模式小组:分别包括适配器模式、装饰模式、桥接模式、组合模式、享元模式、代理模式以及外观模式7大实力强劲的门派,因为本组的各个模式实力都比較强,因此也被称为死亡之组,最后是行为型模式组。因为这一组的的派系较多,被分为了两个小组:行为一组和行为二组,先来看行为一组都有谁,观察者模式、模板方法模式、命令模式、状态模式和职责链模式。行为二组有解释器模式、中介者模式、訪问者模式、策略模式、备忘录模式、迭代器模式。

             首先,我们了解一下创建型模式组的各个模式都有什么过人之处,怎样能在面向对象的设计中占有一席之地,以至于能够称霸武林。

             抽象工厂模式:提供一个创建一系列或者相关依赖对象的接口。而无需指定它们详细的类。

             建造者模式:将一个复杂对象的构建与它的表示分离。使得相同的构建过程能够创建不同的表示。

             工厂方法模式:定义一个用于创建对象的接口。让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟到其子类。

             原型模式:用原型实例指定创建对象的种类,而且通过拷贝这些原型创建新的对象。

             单例模式:保证一个类仅有一个实例,而且提供一个訪问它的全局訪问点。

             大家各就各位后。開始了激战:抽象工厂模式说:创建型模式的优势在于隐藏了这些类的实例是怎样被创建和放在一起的,整个系统关于这些对象所知道的是由抽象类所定义的接口。

    如此一来。创建型模式在创建了什么。谁创建的。怎么被创建的以及何时创建的等方面提供了非常大的灵活性。

             原型模式使出了自己的绝招:我们能够建立对应数目的原型并克隆他们通常比每次用合适的状态收工实例化该类更方便一些。

             建造者模式也用了独门武功:我们将一个复杂对象的构建与它的表示分离,如此便可轻松地改变一个产品的内部表示,而且使得构造代码和表示代码分开。

    这样对客户来讲,无需关心产品的创建过程。而仅仅要告诉我们须要什么就能够用相同的构建过程创建不同的产品出来。

             单例模式略显单薄。但也不甘示弱:对一些类来说,一个实例是非常重要的。一个全局对象能够使得一个对象被訪问,可是不能防止客户实例化多个对象,而我们的独门秘籍就是让类自身负责保存它的唯一实例。同一时候将类外的实例化道路封死。而且提供一个訪问该实例的方法,这样就使得对唯一实例能够严格地控制客户怎样以及何时訪问它。

             最后工厂方法模式放出了大招,顿时天昏地暗:天下设计,无不源自工厂,当设计者发现须要更大的灵活性时,方才向其它创建型模式演化!

    溯其本源,在我工厂!

             果然是杀伤力极强的武功,尽显王者风范,终于的结果不言而喻

查看全文
  • 相关阅读:
    扩展卢卡斯定理
    扩展中国剩余定理
    扩展欧拉定理
    拓展BSGS
    删边最短路
    树 上 差分
    P4568 JLOI 飞行路线 分层最短路板子
    最短路相关
    P3758 TJOI2017 可乐
    bzoj4173 数学
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10702774.html
  • Copyright © 2011-2022 走看看