2.设计原则与软件设计

  1. 设计原则与软件设计

设计原则是设计模式的基石,不多说,看书学习,直接总结。

1.1基本设计原则

 

KISS(Keep it simple stupid):尽量保持代码简洁。

DRY(Don't Repeat Youself):尽量避免不必要的重复,通过抽象实现重用。

Tell,Don't Ask原则:告诉我需要我做什么,不要问我能做什么。

You ain't Gonna Need It原则:

系统只包含必须的功能,不包含你认为将来可能会用到的功能或特性,防止过度设计。

SoC(Separation of Concerns)原则:

分离关注点,最先限度的实现代码复用、功能复用、模块复用。

 

 

1.2solid设计原则

 

SRP(Single Responsibility Principle):单一职责原则。

OCP(Open-Closed Principle):开放闭合原则,对扩展开放,对修改闭合。

LSP(Liskov Substitution Principle):里氏替换原则。

ISP(Interce Segregation Principle):接口分离原则。

不应该强迫类实现它不需要的方法。

DIP(Dependency Inversion Principle):依赖倒置原则,高层模块不应该依赖于低沉的模块,二者都应该依赖于抽象。

2.设计模式

 

2.1创建型模式

 

1.单件模式(singleton)

作用:解决实体对象的个数问题。

  1. 工厂方法模式(factory method)

解决单个对象的变化。

  1. 抽象工厂模式(abstract factory)

解决系列对象的变化。

  1. 生成器模式(builder patter)

把构造对象实例的罗辑移到了类的外部,在这个类的外部定义了这个类的构造罗辑。它把一个复杂对象的构造过程从对象的表示中分离出来了。其直接效果是一个复杂对象简化为了一个比较简单的目标对象。它强调的是产品的构造过程。

  1. 原型模式(Ptototype Pattern)

和工厂模式一样,同样对客户隐藏了对象的创建过程,但是,与通过对一个类进行实例化来构造对象不同的是,原型模式是通过拷贝一个现在的对象来生成新的对象。

 

总结:所有的创建型模式都有两个特点,意识他们都将系统使用具体类的信息封装了起来。二是他们隐藏了这些类的实例是如何被创建和组织的。对于这些对象外界只知道他们共同的接口,而不清楚其具体的实现细节。正是如此,创建型模式在创建什么,由谁来创建,以及何时创建等方面都为软件设计者提供了尽可能大的灵活性。

2.2结构型模式

 

1.适配器模式(adapter)

通过类的集成或者对象组合,让不兼容的接口变得兼容。侧重于转换已有接口。

2.桥接模式(Bridge)

通过将抽象和实现分离,让它们可以独立的变化,它强调的是系统沿着多个方向变化。

3.装饰者模式(decorator)

采用对象组合而非继承的手法,实现了在运行时动态扩展对象功能的能力,它强调的是扩展接口。

4.组合模式(Composite)

模糊了简单元素和复杂元素的概念,它强调的是一种类层次的结构。

  1. façade模式

将复杂系统的内部子系统与客户程序之间的依赖解耦,它侧重于简化接口,更多的是一种架构模式。

  1. 享元(flyweight)模式

解决的是由于大量的细粒度对象所造成的内存开销问题,它与façade模式恰好相反,它所关注的重点是细小的对象。

  1. 代理模式

为其它对象提供了一种代理以控制对这个对象的访问,它注重于增加间接层来简化复杂的问题。

2.3行为型模式

 

1.职责链模式(chain of responsibility)

允许多个类处理同一个请求,而不必了解彼此的功能。典型的俄罗斯套娃结构。

2.命令(command)模式

把申请特定操作的请求封装到一个对象中,并给对象一个总所周知的接口。

3.解释器模式(Interpreter)

定义语言的文法,并且建立一个解释器来解释该语言中的句子。

4.迭代器(Interpreter)模式

提供一种方式可以连续的访问几个对象的所有元素而无须关注内在的描述方式。

5.中介者(mediator)模式

用一个中介对象来封装一系列的对象交互。

6.备忘录(Memento)模式

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态了。

7.观察者模式(Observer)

定义了一种把改动通知给多个对象的方式。

  1. 状态(STATE)模式

允许一个对象在其内部状态改变时候修改它的行为。

  1. 策略模式(strategy)

将算法封装到类中。它定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以互相替换。策略模式让算法独立于使用它的客户而变化。

  1. 模板方法(template method)

提供算法的一个抽象定义。在一个方法里定义算法的骨架。

  1. 访问者模式(visitor)

在不改变类的前提下,为一个类添加多种操作。

2.4各设计模式之间的关系图

 

以上图是从网上找到的,感觉非常不错,直接粘过来了。

3.企业的应用架构模式

 

企业级开发通常是指在开发过程中采用实现企业企业架构模式和实践方法。企业级开发会使用很多的方法和方法论来实现一个成功系统必须具备的指标:可靠性(reliability),灵活性(flexibility)重要性(reusability)可维护性(maintainability),简称RFRM-这些指标也是衡量一个软件系统设计好坏的指标。

 

4.设计方法

 

posted @ 2016-05-28 14:41  常想一二,不思八九  阅读(250)  评论(0)    收藏  举报