美文网首页
《大话设计模式》

《大话设计模式》

作者: 今晚煮面 | 来源:发表于2020-03-09 14:40 被阅读0次

    1,写代码最高境界:可维护,可复用,可扩展,灵活性好

    2,面向对象就是通过封装,继承,多态把程序的耦合度降低

    3,面向对象的三大特性:封装,继承,多态

    4,工厂模式:你给什么东西,就生产相应的东西对象出来

    5,面向对象的编程,并不是类越多越好,类的划分是为了封装,但是分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类

    6,策略模式就是用来封装算法的,它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

    7,策略模式在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性了。

    8,单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。

    9,如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意向不到的破坏。

    10,软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。其实要去判断是否应该分离出类来也不难,那就是如果你能想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离。

    11,开放-封闭原则:就是说软件实体(类,模块,函数等),应该可以扩展,但是不可以修改。对于扩展是开放的,对于更改是封闭的。

    12,开放-封闭原则的精神所在就是:面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。

    13,装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象。

    14,我感觉装饰模式就是把一个东西一层一层的包起来,所以解决的问题就是有新的需求增加的时候,以前的代码不用动,就是在原来的基础上新增新的代码去实现新的业务就可以了。为已有的功能动态的添加更多的功能的一种方式。

    15,代理模式:为其他对象提供一种代理以控制对这个对象的访问。说白了就是我要做一件事情,但是我不想让别人知道,然后我找了一个代理帮我去做这个事情,表面看其实是这个代理做这个事情,但是其实内部是我在做这个事情。

    16,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。其实就是从一个对象再创建另外一个可定制的对象,并且不需要知道任何创建的细节。意思就是先复制一个一样的(深复制,浅复制)

    17,模版方法模式:就是通过把不变的行为搬到超类,去除子类中的重复代码来体现它的优势,当不变的行为和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现,我们可以通过模版方法模式把这些行为搬到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。

    18,迪米特法则:如果两个类不必彼此通信,那么这2个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。它前提就是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,不需要让别人知道的字段或者行为就不要公开,根本思想就是强调了类之间的松耦合。类之间的耦合越弱,越有利于复用。

    19,外观模式:为子系统中的一组接口提供一个一致的界面,定义一个高层接口,使得子系统更加容易使用。把子系统的业务都写在一个类里面,直接对那个类操作就可以了,不需要再去关注子系统中的业务,就像我们应该去买基金,然后基金经理就把我们的钱集合起来去买很多股票一样,我们不用直接面对那么多股票,我们面对基金经理人就可以了。

    20,建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程(顺序)可以创建不同的表示。如果我们用这个模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。

    21,建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。

    22,状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。这个模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。就是将特定状态的相关行为都放入一个对象中,由于所有与状态相关的代码都存在于某个子类中,所以通过定义新的子类可以很容易的增加新的状态和转换。

    23,适配器模式:将一个类的接口转换成客户希望的另外一个接口,adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作了。想使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式了。

    24,备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。就是说先把当前状态保存起来,然后当状态改变后,我如果还想恢复以前的状态,直接把保存的状态拿回来就可以。备忘录封装成一个单独的类,保存着需要保存的状态属性。

    25,组合模式:将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。业务中有需要构造像树状一样的业务层次结构时,就要组合模式,单个可以看作单个,组合也可以看作单个,就像树上面的一个大枝干一样,大枝干又有几个小枝干,这个时候大枝干可以看作单个,也可以看作是几个小枝干的组合。

    26,迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

    27,单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    28,继承是一种强耦合的结构。父类变,子类就必须变。

    29,桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立的变化。实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少她们之间的耦合。其实说白了就是把每个东西抽象出来,然后可以自由组合,自由变化。

    30,命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。

    31,职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。具体的请求者类,处理自己负责的请求,可访问它的后继者,如果可以处理就处理,不可处理就将该请求转发给她的后继者。

    32,中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。由于把对象如何协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象中,这样关注的对象就从对象各自本身的行为转移到它们之间的交互上来,也就是站在一个更宏观的角度去看待系统。

    33,享元模式:运用共享技术有效的支持大量细粒度的对象。就是说用了享元模式,有了共享对象,实例总数就大大减少了。其实简单来说就是有相似的多个对象的时候,你只是需要实例化一次,然后剩下的就引用它就可以了,这样就不用去实例化那么多实例,这样会造成很大的内存开销的。

    34,

    相关文章

      网友评论

          本文标题:《大话设计模式》

          本文链接:https://www.haomeiwen.com/subject/vuisoctx.html