高内聚:表示一个程序单个单元所负责的任务数量和多样性,内聚与单个类或单个方法单元相关————单一职责原因责
耦合度:表示类之间的紧密程度,低耦合度是指尽量使用抽象耦合,少用具体耦合————依赖倒转原则
设计原则和设计模式的作用,其本质就是封装变化点,提高代码的重用和扩展
模式:
模式描述的是具有代表性的重复性的问题及其解答方案,允许使用者举一反三,应用到不同的环境中去,不同的表现,但可以有相同的处理方式
模式包含要素:
1.模式名称
2.该模式所能解决的问题
3.解决方案
4.使用该模式的效果(优,缺点)
模式分类:
1.架构模式:架构是指一个软件系统整体的组织结构,架构模式描述软件系统的组织构成的一些规则和指南
2.设计模式:设计模式描述的是在软件系统的某一局部不断重现的核心解决方案,这种解决方案以完善的设计结构出现,可以被应用到以后出现的类型环境中
设计模式分类:
1).创建模式:涉及对象的创建
如:单例模式(重点,话说应聘时就考这),工厂模式,建造者模式,原型模式
2).结构模式:
如:Facade外观模式,代理模式,适配器模式,装饰模式
3)行为模式:刻画了类和对象交换及分配职责的方式,主要目标是解耦
如:观察者模式,命令模式,模板模式,策略模式
单例模式:
public class Man {
//单例模式的两种表现形式
//--预加载单例模式
// private static Man m = new Man();
// private Man(){}
//
// public static Man getMan(){
// return m;
// }
//--延迟加载单例模式
private static Man m;
private Man(){}
private static Man getMan(){
if(m == null){
synchronized(Man.class){
if(m == null){
m = new Man();
}
}
}
return m;
}
}
工厂模式:将对象的创建和对象的使用分开进行,这样可以减少类与类之间的耦合度
原型模式:通过复制或克隆的方式进行创建对象,这样无需知道创建对象的细节
浅度克隆:如果克隆对象有引用类型的属性,则和原对象引用类型的属性,都指向同一个对象
深度克隆:克隆对象的引用类型的属性和原对象引用类型的属性,指向不同对象也就是本身克隆,引用类型指向的对象也克隆
外观模式:迪米特法则具体的体现,也就是类与类之间尽量减少交往,这样不会因为一个类的业务变化而导致另一个的变化
装饰器模式:对象功能的扩展能够根据需要来动态地实现
代理模式:在目标方法执行前式执行后,附加非功能性的逻辑
适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作