最近写一个java swing + Mysql的桌面小应用的时候,考虑设计模式的时候想到了最传统的工厂模式。因为是初学者,所以就试着用了一下。
一个酒店管理的小系统,主要的业务也就是客房业务,管理员业务,旅客业务和历史记录四个业务实体类。因此采用工厂模式的设计思路代码如下:
public class ManagerFactory{
protected ManagerFactory(){}
//实例化ManagerFactory类
public static ManagerFactory newInstance(){
return new ManagerFactory();
}
//获取客房业务RoomManager对象
public RoomManager getRoomManager(){
return new RoomManager();
}
//获取管理员业务AdminManager对象
public AdminManager getAdminManager(){
return new AdminManager();
}
//获取旅客业务CustomerManager对象
public CustomerManager getCustomerManager(){
return new CustomerManager();
}
//获取历史记录业务HistoryManager对象
public HistoryManager getHistoryManager(){
return new HistoryManager();
}
}
以上的一个工厂类主要作用就是可以很方便地实例化一个具体的业务处理对象。省去了在需要调用具体的类方法时对类的一般创建过程。
以下是网上查的工厂模式的优缺点:
优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
总之,每种模式都有其特点,在适合工厂模式的情况下用还是比较方便的。