Homebrew 更新源
1.直接安装 由于Homebrew自身采用的源很慢,它会在我们安装程序的时候先update一下,然后再下载和安装。这个时候,我们可以直接使用Control+C暂停更新,然后安装,但是后面的软件安装依旧会从自带的源获取包,…
应该有且仅有一个原因引起类或接口的变更,类和接口只有一个职责,它就负责一件事
建议:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。
即:只要父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误和异常,使用者可能根本就不需要知道是父类还是子类。但是反过来就不行了,有子类出现的地方,父类未必就能适应。
构造函数传递依赖对象
public class Driver implements IDriver{
private ICar car;
public Driver(ICar _car){
this.car = _car;
}
}
Setter方法传递依赖对象
public class Driver implements IDriver{
private ICar car;
public setCar(ICar car){
this.car = car;
}
}
接口声明依赖对象
public void drive(ICar car);
即:建立单一接口,不要建立臃肿庞大的接口,接口应该尽量细化,同时接口中的方法尽量少(注:接口隔离原则和单一职责原则角度不同:单一职责原则要求的是类和接口职责单一,注重的是职责,这是业务逻辑的划分,而接口隔离原则要求接口的方法尽量少)
一个对象应该对其他对象有最少的了解。
迪米特法则要求类尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用private,default,protected等访问权限
一个类放在本类中,既不增加类之间的关系,也不对本类产生负面影响,那就放置在本类中。
一个软件如实体类、模块和函数应该对扩展开发,对修改关闭。即通过扩展来实现变化
SOLID:稳固的,六个原则建立稳固的设计。
参考书籍:设计模式之禅——秦小波著
1.直接安装 由于Homebrew自身采用的源很慢,它会在我们安装程序的时候先update一下,然后再下载和安装。这个时候,我们可以直接使用Control+C暂停更新,然后安装,但是后面的软件安装依旧会从自带的源获取包,…
Docker的镜像和容器 1. 架构与底层技术支持 Docker的总体架构: 底层技术支持: Namespaces:做隔离pid,net,ipc,mnt,…