写点什么

架构师训练营第二周课后作业

用户头像
Gosling
关注
发布于: 2020 年 09 月 26 日

1. 请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

在开发过程中存在高层和底层之分,如果高层依赖底层,那么在底层调整时,可能会导致高层受到影响。而依赖倒置原则是通过高层依赖抽象接口,底层也依赖于高层的抽象,只要保证抽象不变,那么无论底层的具体实现是否改变,高层都不会受到影响。

好莱坞原则,是说 don't call us,we will call you,意思是高层不要主动去关注底层的细节,我们开发的代码不要去调用框架,而是遵循框架依赖的抽象,我们也依赖抽象去进行开发实现。这样能保证框架可以调用我们的代码,也就是框架(好莱坞)会 call 我们编写的代码。


2.请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。


1.首先把 Cache 实现的操作和配置功能隔离出两个接口,ICacheAction 和 ICacheConfig;

2.分别编写两个适配器,分别依赖这里两个接口,让 Cache 类同时实现 ICacheAction 和 ICacheConfig;

3.在适配器中使用依赖的抽象来调用;


部分代码实现:

ICacheAction 接口

public interface ICacheAction {	Object get(Object key);
void put(Object key, Object value);
void delete(Object key);}
复制代码

ICacheConfig 接口

public interface ICacheConfig {	void reBuild(Config conf);}
复制代码

Cache 类

public class Cache implements ICacheAction,ICacheConfig{	public Object get(Object key) {		return null;	}
public void put(Object key, Object value) { }
public void delete(Object key) { }
public void reBuild(Config conf) { }}
复制代码

CacheActionAdapter 类

public class CacheActionAdapter implements ICacheAction{	private ICacheAction cache;		public CacheActionAdapter(ICacheAction cache) {		this.cache = cache;	}		public Object get(Object key) {		return cache.get(key);	}
public void put(Object key, Object value) { cache.put(key,value); }
public void delete(Object key) { cache.delete(key); }}
复制代码

CacheConfigAdapter 类

public class CacheConfigAdapter implements ICacheConfig{	private ICacheConfig cache;		public CacheConfigAdapter(ICacheConfig cache) {		this.cache = cache;	}		public void reBuild(Config conf) {		cache.reBuild(conf);	}}
复制代码


用户头像

Gosling

关注

这个家伙很懒,只留下这一句话 2017.10.28 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第二周课后作业