赞
踩
单一职责原则,Single Responsibility Principle,简称SRP,有且只有一个原因引起类/接口的变更;即一个接口/类只有一个职责,只负责一件事情。
单一职责的好处:
面向接口编程,对于接口的设计要求接口职责做到单一。
单一职责原则使用于接口、类,同时使用于方法。保证一个方法尽可能的只负责一件事。
最佳实践:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。
面向对象语言中,继承是必不可少的,其优缺点如下:
优点:
缺点:
里氏替换原则,Liskov Substitution Principle,简称LSP , 所有引用基类的地方必须能透明地使用其子类对象。即父类能出现的地方子类就可以出现,而且替换为子类不会产生任何影响或异常,但是反过来不行,有子类出现的地方,父类未必能适应。
里氏替换原则为良好的继承定义了一个规范,含义如下:
采用里氏替换原则的目的:增强程序的健壮性,版本升级时也能保证很好的兼容性。
最佳实践:在项目中,采用里氏替换原则时,尽量避免子类的个性。
依赖倒置原则,Dependence Inversion Principle,简称DIP,改原则在Java中的表现:
更加精简的定义就是:面向接口编程。
依赖的3种写法:
最佳实践:
依赖倒置原则本质是用过抽象(接口或抽象类)使各个类或者模块实现彼此独立,不相互影响,实现模块间的松耦合。只需遵循以下规则即可:
接口隔离原则: 客户端不应该依赖它不需要的接口,类之间的依赖关系应该建立在最小的接口上。即建立单一接口,不要建立臃肿庞大的接口。也即接口尽量要细化,接口中的方法尽量少。
迪米特法则,最小知识原则,Law of Demeter,简称LoD。一个对象应该对其他对象有最少的了解。即一个类应该对自己需要耦合或调用的类知道的最少。
迪米特法则核心:类间解耦,弱耦合。
开闭原则:一个软件实体如类、模块、函数应该对扩展开发,对修改关闭。即一个软件实体应该通过扩展实现变化,而不是通过修改已有的代码实现变化。
SOLID
Single Responsibility Principle 单一职责原则,
Open Closed Principle 开闭原则,
Liskov, Substitution Principle 里氏替换原则 ,
Law of Demeter 迪米特法则,
Interface Segregation Principle 接口隔离原则,
Dependence Inversion Principle 依赖倒置原则
单例模式:确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式优缺点:
优点:
缺点:
单例模式使用场景:
在一个系统中,要求一个类有且只有一个对象,如果出现多个对象会出现不良反应,可以采用单例模式,具体场景如下:
注意事项:
最佳实践:
例如Spring中的Bean是单例的,这样可以使得Spring容器管理这些Bean的生命周期。
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式是一个类的实例化延迟到其子类。
在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义;Creator为抽象创建类,也就是抽象工厂,具体如何创建产品类由具体的实现工厂完成。
工厂方法模式的优点:
工厂方法模式的使用场景:
工厂方法模式的扩展:
抽象工厂模式:为创建一组相关或者相互依赖的对象提供一个接口,而且无须指定它们的具体类。
抽象工厂模式是工厂方法模式的升级版本,在多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。
抽象工厂优缺点:
优点:
缺点:
模板方法模式: 定义一个操作的算法框架,而将一些步骤延迟到子类中。是的子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方法模式使用Java的继承机制,其中,AbstractClass是抽象模板,其方法分为2类:
模板方法模式优缺点:
优点:
缺点:
模板方法模式使用场景:
建造者模式,又称生产者模式:讲一个复杂兑现给的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式通常有如下4中角色:
建造者模式优缺点:
优点:
建造者模式的使用场景:
建造者模式注意事项:建造者模式关注的是零件的类型和装配工艺(顺序)。
代理模式,委托模式:为其他对象提供一种代理以控制对这个对象的访问。
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式的核心是clone()方法,通过该方法进行对象的拷贝,Java提供了一个Cloneable接口标识这个对象是可以拷贝的。
原型模式的优点:
原型模式使用场景:
原型模式注意事项:
中介者模式:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
中介者模式组成部分:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。