框架设计原则
本周是跟随李智慧老师学习架构师训练营的第二周,本周主要学习了架构设计中的一些基本原则,总结如下:
人类第一个程序员:英国人 Ada
编程方法演进过程:面向计算机、面向过程、面向对象
第一个成功的面向对象语言:Smalltalk
对象的特点:
状态:表明每个对象具有自己的数据
行为:表明每个对象可以产生的行为(方法)
标识:表明每个对象都区别于其他对象(唯一地址)
面向对象的特点:封装、继承、多态、(抽象)
软件设计的目的:使程序达到“强内聚,松耦合”,从而使软件:
1.易扩展:易于扩展功能
2.更强壮:不容易被粗心的程序员破坏
3.可移植:能够在多样的环境下运行
4.更简单:可读性高、易维护
面向对象设计基本原则:
1.开闭原则
2.里氏置换原则
3.依赖倒置
4.单一职责
5.接口隔离
(6.迪米特法则)
开闭原则
对扩展开放,对修改关闭。增加新功能时不应该对原有业务逻辑进行修改包括类、函数、模块等,关键是抽象,扩展功能应通过原有的抽象实现自己的业务逻辑。
里氏置换原则
能出现父类的地方就能用子类替换,并且不会对现有程序造成任何影响。优先使用组合。
依赖倒置
高层与低层不能相互依赖,均应依赖于抽象,并且此抽象属于高层。
单一职责
接口或类只具有单一行为(组成元素之间的功能相关性)。一个职责指一个变化原因,一个类,只能有一个引起其变化得原因。
接口隔离
不应该强制让客户程序依赖它们不需要的方法,即不应将调用方不需要的行为暴露给调用方。
作业:
1. 请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
2. 请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。
提示:cache 实现类中有四个方法,其中 put get delete 方法是需要暴露给应用程序的,rebuild 方法是需要暴露给系统进行远程调用的。如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。
1.依赖倒置原则指高层不应依赖于低层,低层也不应依赖于高层,高层与低层应共同依赖于抽象,并且此抽象属于高层。好莱坞原则:Don't call me,l will call you(不要给我打电话,我会打给你).以 tomcat、spring 等容器(高层)为例,我们编写应用程序(低层)并不需要去调用(call)tomcat 或者 spring 的方法,只要应用程序按照 tomcat 或 spring 的规范去编写,tomcat 或 spring 就会调用我们的代码(call me)运行程序。
2.
需要使用 put get delete 方法的应用程序注入 BaseCache
需要使用 rebuild 方法的应用程序注入 ConfigCache
评论