读书笔记----软件设计原则、设计模式

这个作业属于哪个课程 课程首页
这个作业要求在哪里 作业要求
这个作业的目标 学习设计模式,对设计模式的内容进行总结

参考书籍

书名 《大话设计模式》
作者 程杰
出版社 清华大学出版社
内容简介 本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GOF(设计模式名著)。通过小菜与大鸟的趣味问答,在讲解程序的不断重构和演变过程中,把设计模式的学习门槛降低,让初学者可以更加容易地理解

结合一些图、表工具,用自己的语言对书的主要内容进行归纳总结。
结合自己曾经的软件开发实践,思考用到了哪些原则或模式?谈谈读书的心得体会。

内容总结

  • 设计模式是什么
    设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

  • 设计模式种类
    总体来说设计模式分为三大类:

    类型 模式
    创建型模式 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
    结构型模式 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
    行为型模式 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
  • 六大原则

    • 单一职责原则:一个类只负责一个功能领域的相应职责或定义为只对外提供一种功能,即引起类变化的原因只有一个。在spring中有着大量遵循单一职责的设计,如BeanFactory、ResourceLoader等。

    • 开闭原则:软件实体对扩展开放,对修改关闭。即软件实体尽量在不修改原有代码的情况下进行扩展。开闭原则是最基础的原则,其他5个原则都是开闭原则的具体形态。

    • 里氏替换原则:任何使用基类的地方都可以使用其子类替换。是开闭原则的重要方式

    • 依赖倒置原则:抽象不依赖于细节,细节应该依赖于抽象。即要针对接口编程,而不是针对实现编程。spring的核心思想便是IOC,对象不再需要程序员手动new,基本都是通过bean注入的方式来获取。这种方式极大降低了代码的耦合度。代码举例:

//妈妈要开始讲故事,现在有两本书,一本是报纸,一本是故事书...
interface IReader{
	public String getContent();
} 
class Newspaper implements IReader {  
	public String getContent(){
		return "小红和小蓝在敲代码...";
	}
}
class Book implements IReader{
	public String getContent(){
		return "很久很久以前......";
	}
}

class Mother{
        //如果在这里new一本书,那要是后面想换一本书来读,就得修改妈妈的代码,再new一本
        //但实际开发中,修改一个类的代码是很危险的。
	public void sayStory(IReader reader){  //现在可以通过接口获取书,后面想换书只需用户传另一本过来,妈妈都不用做其他动作。
		System.out.println("妈妈开始讲故事");
		System.out.println(reader.getContent());
	}
}

public class Client{
	public static void main(String[] args){
		Mother mother = new Mother();
		mother.sayStory(new Book());
		mother.sayStory(new Newspaper());
	}
}

  • 接口隔离原则:使用多个专门的接口,而不使用大接口,即客户端不应该依赖那些不需要的接口。每一个接口应该承担一种相对独立的角色,不干不该干的事,该干的事都要干。

  • 迪米特原则:一个软件实体应尽可能的少的与其他实体发生相互作用。目的:降低系统耦合度,使类与类之间保存松散的耦合关系。可以引入第三方调用,如Spring中的IOC容器。

读书感想

我之前学习过spring框架,虽然觉得好用,但还是未能领悟到其中设计的精妙之处。在读过《大话设计原则》后,我对设计原则有了全面的认识,这时再回头看spring的设计,才知道原来spring的设计遵循了大量的设计原则、设计模式,相当巧妙,让我对spring有了全新的理解。
总之看完后感觉我又行了,敲代码感觉也自信了。

后台截图

posted @ 2021-03-16 22:08  koitomi  阅读(102)  评论(0)    收藏  举报