定义:父类定义流程,子类实现细节;
解决问题:主要解决了代码重复的问题;
在项目的使用:比如dbutils源码中把jdbc的重复代码抽取出来,是对jdbc 的一个轻量级的简单封装;
生活中的实例:如NOKIA手机总部定义一套制作手机的流程,各个生成其产品的厂商就根据此流程来进行生成;
优点:重用性,降低耦合度;
jdk中实现:
http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns
http://yan578351314.javaeye.com/blog/969553
结构:
//父类定义流程
public abstract class Mobile {
public void init(){
initShip();
initPack();
}
private void initPack() {
// TODO Auto-generated method stub
}
private void initShip() {
// TODO Auto-generated method stub
}
}
//具体子类实现
public class ChinaMobileImpl extends Mobile{
@Override
public void init() {
System.out.println("ChinaMobileImpl .init()");
}
}
//具体子类实现
public class JapanMobileImpl extends Mobile{
@Override
public void init() {
System.out.println("JapanMobileImpl.init()");
}
}
//具体客户端调用
public class Client {
public static void main(String[] args) {
Mobile mobile = new JapanMobileImpl ();
mobile.init();
}
}