设计模式:在大量的实践中总结、理论化之后优选的代码结构、编程风格,解决问题的方案和途径。
组成部分:
模式名称:名词或名词短语,用来描述模式的问题、解决方案和效果
问题:描述何时使用该模式。
解决方案:描述模式的组成,各自的职责,相互关系
效果(consequence):描述使用模式的效果及使用这个模式时应该权衡的问题。
单例设计模式:
背景:某个类的实例对象在内存中只有一个。
实现:
1、 构造函数似有。
2、 由本类提供一个静态的返回值是本类类型的获得本类对象的方法。
3、 定义一个静态的本类类型的成员变量来保存本类类型的对象。
/**
* 单例模式
* 1、构造函数私有
* 2、由本类提供一个或得本类对象的静态方法
* 3、定义一个保存实例对象的静态成员变量
* @author Administrator
*
*/
public class SingletonPattern {
private double random;
private static SingletonPattern sp;
private SingletonPattern(){
random = Math.random();
}
public double getRandom(){
return random;
}
static public SingletonPattern getInstance(){
if(sp == null){
sp = new SingletonPattern();
}
return sp;
}
}
策略模式:
背景:在抽象父类中对各个子类的共同功能进行描述或实现。
模板模式:
在父类中应尽可能多的将子类的共同特性进行描述或实现,而将各个子类的不同功能在子类中进行具体实现,限制子类设计的随意性–(由父类实现共同部分,由子类实现不同部分)。
组合设计模式:
例:
public class ConstructionOfBankInBeijing {
private ConstructionOfBank construction; //组合
private double addInterest;
public ConstructionOfBankInBeijing(ConstructionOfBank construction, double addInterest) {
this.construction = construction;
this.addInterest = addInterest;
}
public double CalculateInterestNew(){
return construction.calculateInterest()+addInterest;
}
}