设计模式之三大原则(fyun之我见系列三)

我们先来回顾下策略模式,一般策略模式主要满足以下情况:

1: 多个对象(类)只是在其特征或表现出来的行为不同,运行时需要动态来分别执行它们。

2:需要在不同情况下,调用一个对象(子类)来实现不同的算法。

3:需要完全隐藏具体策略(算法)的实现。

策略模式的优缺点主要如下:
优点:1:提供一套继承的方法,能够发挥其继承(代码重用)的优点,而且针对自身还可以有其灵活的实现。

    2: 避免程序多重条件的判断,灵活性好。

    3: 高内聚,低耦合。

缺点: 1: 针对新的策略(实体)需要产生新的类,从而导致随着不同类的需求而使维护类过多。

回顾就结束了,接下来将分别谈谈设计模式的三大原则:


单一职责原则:从名称上就可以知道它是什么意思。我这里也就把我对其在现实编码过程中的理解说说吧。

当我们创建一个类时,你能够想到的多于一个动机去改变类,那么这个类就多一个职责。说通俗点就是,我们看到一辆汽车的时候,我们首先想到它能用来驾驶,能够跑。

看到这些时候我们还可以想到它还可以载人(物)etc。那么汽车的驾驶、跑、载人(物)就是其三个职责。


开放 - 封闭原则:是面向对象开发的核心原则。简单点说就是对抽奖基类(父类)尽量封闭,对子类继承扩展完全开放。

当我们碰到很多设计的时候,并不是需求一来就是齐全的,需求往往随时间变化而变化,也就是说,我们在初始开发设计需求的时候,尽量抽出我们需要封闭的地方,当然我们不可能一下子就想到,但熟话说的好,在一个地方第一次跌倒不是你的错,但第二次、三次呢? 其实开放-封闭原则就是这个道理,我们在设计时候如果刚开始方向错误,我们可以快速的纠正设计,把我们需要封闭的地方找出,从而来达到灵活的扩展。

fyun在对这个原则的在设计说的理解就一点,找到相通点,也就是我们需要封闭的地方,然后再此基础上作出开放的扩展设计。


依赖倒转原则:这个原则原话解释是“抽象不应当依赖于细节,细节应当依赖于抽象”,解释为:

A: 高层模块不应当依赖于低层模块。两个都应该依赖于抽象。

B: 抽象不应当依赖于细节,细节应当依赖于抽象

听起来相当的绕口,而且晦涩难懂。我在该原则上花了好久,这里就把我对该原则的白话解释下吧:

个人理解就是:我们在模块设计时候应当将不同模块各自分离(这是你选择设计模式时候能够达到的)但考虑各个模块之间的联系(通讯)我们则需要采用一个标准(可以是接口,抽象类(前面写的简单工厂模式)来进行中间的定义,不管我们对那个模块的开发,他们都是依赖于我们定制的标准来开发,这样,我们在模块的衔接上就能够在其中一个模块发生问题的基础上,可以只需要更新(纠正)该模块即可,而不需要我们去更新其他的模块。


上面是个人在大量设计中的一小点对依赖倒转原则的理解,希望大家提出更好的理解,评论来共享。


讲了三大原则,我这里就简单说下一个原则:里氏代替原则:一句话,就是子类必须能够替换掉他们的父类(基类)。白话说就是,父类的方法、属性等子类必须能够全部拥有,而子类的特性和方法,父类不一定需要有。就这么简单。


我们在平时设计的时候,尽量遵循三大原则来进行设计,这样将对我们的开发模式会得到很好的应用,熟话说:无规矩不成方圆。就是这个道理。


接下来我们将开始一个新的开发模式的讲解:装饰模式(decorate)




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值