JAVA设计模式

抽象工厂模式是我接触最多的一种模式,也是创建型模式之中最具有代表性的一个。

下面是我在《JAVA优化编程》中的一点学习经验和对抽象工厂模式的理解,先引入书中的例子:

抽象工厂类:
public abstract class Factory{
 			public Product create(int type); 

}

抽象产品类:
public abstract class Product{
}

士兵工厂类:
public class SoldierFactory extends Factory{
			public Product create(int type){
					return createSoldier(type);
			}
			//内部创建方法
			private Soldier createSoldier(int type){
						return new Soldier(type);
			}

}

战斗机工厂类:
public class BattleplanFactory extends Factory{
			public Product create(int type){
					return createBattleplan(type);
			}
			//内部创建方法
			private Battleplan createBattleplan(int type){
						return new Battleplan(type);
			}
}

士兵类:
public class Soldier extends Product{
		public Soldier (int type){
				if (type==1){
						//创建类型为1的士兵
				}else if (type==2){
						//创建类型为2的士兵
				}else if (type==3){
						//创建类型为3的士兵
				}else if (type==4){
						//创建类型为4的士兵
				}
		}
}

战斗机类:
public class Battleplan extends Producer(){
			public Battleplan (int type){
				if (type==1){
						//创建类型为1的战斗机
				}else if (type==2){
						//创建类型为2的战斗机
				}else if (type==3){
						//创建类型为3的战斗机
				}else if (type==4){
						//创建类型为4的战斗机
				}
		}
}

创建所需要的产品:
Factory factory =null;//创建工厂对象
if(要创建士兵工厂){
	factory=new SoldierFactory();
}
if(要创建战斗机工厂){
	factory=new BattleplanFactory();
}
//通过具体的工厂创建士兵和战斗机
soldier=factory.createSoldier();
battleplan=factory.createBattleplan();

先创建了一个抽象工厂类和一个抽象产品类,士兵工厂类和战斗机工厂类分别继承了基类的抽象工厂,在类中实现了两个方法,分别返回的是产品的创建方法和对象的创建实例,在这里就对产品的创建方法进行了封装。当我们创建所需要的产品的时候,只需要创建一个Factory的实例factory,然后拿这个factory只管创建对象就行了,这样就可以根据实际情况的需要来创建合适的工厂。

 

 

抽象工厂模式具体的思想就是分层和抽象思想,引入了工厂的概念,可以很好的把类的实现和类的创建分离开来,增加了代码的可读性和封装性,如果在对类的创建方法进行修改,类的实现者可以不必注重这部分的改变,对于类的实现者来说,他所要做的就是仅仅用基层的Factory来生成实例并创建对象。说到底,抽象工厂是对JAVA中多态性的很好的一种实现方式。

你可能感兴趣的:(java,设计模式,编程)