软件开发的七大设计原则和23三种设计模式分类

一、在软件开发中应遵循的软件开发中的七大设计原则:

首先:必须说明设计原则只是软件设计种的指导思想,实际开发中对于设计原则应该合理运用而非生搬硬套,设计原则并非强制性,也并非完全不能违背,仁者见仁,智者见智,设计不是根据原则一成不变,而是拥抱变化。

1、开闭原则(Open-Close Principle 其他原则都是开闭原则的具体实现)

  定义:开发过程中对类,模块,函数等对扩展开放,对修改关闭。用抽象构建框架,用细节扩展实现,对原有的功能保持不变。

    使用方式:在开发设计初期,根据现有的业务场景,设计出完整的骨架,但需要根据业务的实际特性,留出适当的扩展空间,当原有的功能不足以支持业务的需要,不能以修改原代码的方式,而应通过继承,包装,代理前后置的等扩展的方式去完成新功能的扩展。

  优点:提高系统的扩展性

              保证原有代码的稳定性

              提高原有代码的复用性

              提高代码的可读性

  案例:假设我们是一个网课公司,如果我们设计一个网课的接口,根据现有的网课我们设计了售价,录制,答疑三个方法的网课接口,假设我们现有的实现类不再满足业务需要,我们可以通过继承并新增方法,在新功能上使用新的业务模型去做,当然如果涉及到是所有网课都共有而我们之前没有考虑到或者业务增长所带来的公共特性,那接口是需要发生改变,而项目也会有重构周期的,这是根据具体业务情况而定的。原则只是在设计开发种的指导思想,但我们真实的情况要视实际场景而定,不能一味的死搬硬套。

2、依赖倒置原则(Dependence Inversion Principle)

  定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象,而不应该依赖于实现编程(spring种工厂模式很多都基于这样的思想)

  使用方式:上面我们说到其他原则都是开闭原则的具体实现,而依赖倒置原则其实也是这样的思想。在开发设计种,设计最上层接口,然后具体实现最上层模块,而上层模块衍生扩展出下层到底层的功能及实现

  优点:可以减少类间的耦合性、提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险

  案例:Spring的IOC工厂就是一个很典型的例子,spring最上层设计了顶层的工厂类,而顶层的工厂就会有抽象工厂,抽象工厂里面有具体的实现逻辑我们,往下又会有其他工厂去实现顶级BeanFactory接口。

   

3、单一职责原则(Simple Responsibility Principle)

     定义:不要存在多于一个导致类变更的原因,一个类,接口,方法应该只负责一个粒度的职责。

  使用方式:

  优点:

   

4、迪米特法则 (Law of Demeter)

  定义:

  使用方式:

  优点:

   

5、接口隔离原则 (Interface Segregation Principle)

  定义:

  使用方式:

  优点:

   

6、里氏替换原则 (Liskov Substitution Principle)

  定义:

  使用方式:

  优点:

   

7、合成复用原则 (Composite&Aggregate Principle)

  定义:

  使用方式:

  优点:

   

 

 

二、Java软件开发中23种设计模式分类

一、创建型模式


       1.工厂方法模式 (Factory Method)
  2.抽象工厂模式 (Abstract Factory)
  3.建造者模式 (Builder)
  4.原型模式 (ProtoType)
  5.单例模式 (Singleton)


二、结构型模式


  1.适配器模式 (Adapter)
  2.桥接模式 (Bridge)
  3.组合模式 (Composite)
  4.装饰器模式 (Decorator)
  5.门面模式 (Facade)
  6.享元模式 (Flyweight)
  7.代理模式 (Proxy)


三、行为行模式


  1.解释器模式 (Interpreter)
  2.模板方法模式 (Template Method)
  3.责任链模式 (Chain of Responsibility)
  4.命令模式 (Command)
  5.迭代器模式 (Iterator)
  6.调解者模式 (Mediator)
  7.备忘录模式 (Memento)
  8.观察者模式 (Observer)
  9.状态模式 (State)
  10.策略模式 (Strategy)
  11.访问者模式 (Visitor)

下篇将会针对常用的设计模式进行详细描述以及代码实现。

 

猜你喜欢

转载自www.cnblogs.com/luoshiyi/p/12349244.html