设计模式学习
一、简单工厂模式
1. 简单说明
工厂模式的目的在于提高程序的可扩展性。简单工厂,它是为了让程序有一个更好地封装,降低程序模块之间的耦合程度,就是去创建一个创建对象的工具类(接口),在这个工具类(接口)里面,我们就可以进行一些其他操作,比如对象的初始化。
2. 简易类图
1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品
2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。
3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
3. 案例
一个生产载具的工厂,可生产汽车和卡车两种产品。
二、工厂方法模式
1. 简单说明
去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分担。定义了一个创建对象的接口,但由子类决定要实例化哪一个。工厂方法让类把实例化推迟到了子类。
2. 简易类图
1) 抽象工厂角色:这是工厂方法模式的核心,是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
2) 具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
3) 抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
4) 具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
3. 案例
工厂可以生产汽车,由同一种生产方法生产的汽车有两种,一种是奥迪、一种是本田(除去类图中“工厂2”“产品3”“产品4”)。
三、抽象工厂模式
1. 简单说明
工厂方法模式中,具体工厂间是完全独立的,除了都是抽象工厂的子类没有交集。在抽象工厂模式中提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。
2. 简易类图
3. 案例
工厂可以生产载人载具或载货载具,都有两种生产方式生产汽车或卡车,四种产品奥迪(只载人)、吉普(主要载人,可以载货)、皮卡(主要载货、可以载人)、解放(只载货)。
主页