23中设计模式概括及六种设计原则(一)

一、设计模式分类

总体来说模式依据目的可分为创建型模式(Creational)、结构型模式(Structural)、行为型模式(Behavioral)三种。

创建型模式:处理对象的创建。共5种:工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)。

结构型模式:处理类或对象的组合。共7种:适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰器模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)。

行为型模式:对类或对象怎样交互怎样分配职责进行描述。共11种:解释器模式(Interpretor)、模板方法模式(Template Method)、责任链模式(Chain of Responsibility)、命令模式(Command)、迭代子模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、访问者模式(Visitor)。

它们之间存在以下的关系:

 二、六大设计原则

1、单一职责原则(Single Responsibility Principle, SRP)

一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

建议:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。

2、里氏替换原则(Liskov Substitution Principle, LSP)

所有引用基类(父类)的地方必须能透明地使用其子类的对象。

解释:只要父类能出现的地方子类就可以出现,而且替换成子类页不会产生任何异常或错误,使用者可能根本就不需要知道是子类还是父类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。

3、依赖倒置原则(Dependency Inversion  Principle, DIP)

抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

4、接口隔离原则(Interface  Segregation Principle, ISP)

使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。

5、迪米特法则(Law of  Demeter, LoD)

一个软件实体应当尽可能少地与其他实体发生相互作用。

注意:在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及;在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限;在类的设计上,只要有可能,一个类型应当设计成不变类;在对其他类的引用上,一个对象对其他对象的引用应当降到最低。

6、开闭原则(Open-Closed Principle, OCP)

一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

 

原文地址:https://www.cnblogs.com/Jimc/p/10057016.html