23种设计模式归纳(二)——结构型模式
23种设计模式归纳(三)——行为型模式
创建型模式简述
1. 工厂模式
特点:工厂方法把实例化推迟到子类
(1) 简单工厂
以生产车为例,有抽象产品角色、具体产品角色、简单工厂则负责根据给定参数(类名)返回具体的产品。
缺点:如果增加了产品种类,还需要更改简单工厂的源代码
(2) 工厂方法模式
去掉了简单工厂模式中工厂方法的静态属性,使它可以被子类继承。
角色:抽象工厂角色、具体工厂角色、抽象产品角色、具体产品角色
2. 抽象工厂模式
(3) 抽象工厂模式
抽象工厂模式和工厂方法模式的区别就在于需要创建对象的复杂程度上。(区别:工厂方法每个具体工厂类只能创建一个具体产品类的实例,而抽象工厂类可以创建多个具体产品类的实例)
3. 单例模式
(1) 饿汉式
class Singleton{
private static Singleton singleton = new Singleton;
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
}
(2) 懒汉式
class Singleton{
private static Singleton singleton = null;
private Singleton(){}
public static synchronized Singleton getInstance(){
if(singleton == null){
return singleton;
}
return singleton;
}
}
(3) 内部类
class Singleton{
private Singleton(){}
public static Singleton getInstance(){
return Inner.singleton;
}
private static class Inner{
final static Singleton singleton = new Singleton();
}
}
4. 建造模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
角色:抽象建造者角色、具体建造者角色、指导者角色、产品角色、
5. 原型模式
角色:抽象原型角色、具体原型角色、客户角色