1.工厂模式
- 工厂模式是java设计中常用的设计模式之一,属于创建者设计模式,该模式不在意具体实现对象的类是谁,提供一个类实现工厂直接按需要决定获取哪个类。
- 解决问题:创建对象时接口的选择。
- 优点:1.使用一个接口就可以创建多个不同对象。2.扩展性高,增加产品只需要增加一个实现类。
- 缺点:每次增加产品都要改写工厂代码,并且多个类的依赖也增加了程序的依赖性。
- 理解:工厂模式就像是去4s店买车,去了之后可以根据需求来挑选,不需要关心车是怎么组装完成的。
- 代码
定义一个接口
public interface shape{
void draw();
}
完成具体实现的类
public class Cricle implements animal{
@Override
public void draw(){
System.out.println("Cricle");
}
}
public class Square implements animal{
@Override
public void draw(){
System.out.println("Square");
}
}
实现工厂类
public class Factory(){
//完成get方法,通过不同的条件获取不同的类
public Shape get(String shape){
if(shape == null){
return null;
}else if(shape.equalsIgnoreCase("CRICLE")){
return new Cricle();
}else{
return new Square();
}
}
return null;
}
抽象工厂模式
- 如果说工厂模式是一条创建同一系列产品的流水线,那么抽象工厂模式就是多条创建不同产品的流水线的一个集合工厂。需要注意的是,各个流水线(工厂)之间是相互独立的,并且流水线(工厂)是生产一整套有关联或者有依赖的产品(至少有两种产品)。
- 解决问题:也是解决创建对象时接口的选择。
- 优点:当一个工厂的多个产品被同时使用,保证使用的是同一工厂生产的产品。(例子:假设AK47工厂生产AK47枪和子弹,保证是配套使用的,如果不配备的子弹和枪可能无法使用。)
- 缺点:扩展一个新的产品工厂比较麻烦,又要在抽象类中加获取方法,又要实现具体。
- 理解:抽象工厂模式就像是集团企业,手里握有多个品牌,每个品牌下都有一系列该品牌的产品(如著名奢侈品牌LVMH,旗下有很多品牌,时装品牌LV, 美酒酩悦等等,同时这些品牌又有自己的一系列产品。)
工厂模式和抽象工厂模式的比较
- 从产品的角度看:抽象工厂强调产品的关联性,所以需要至少两个产品,而工厂方法强调产品本身,可以只生产一个产品或者多个都行。
- 从面向使用的而角度看:抽象工厂面向客户端,使用的是一系列产品共同作用。而工厂方法,使用产品本身。
本文深入探讨了工厂模式和抽象工厂模式的概念,对比两者在产品创建、使用场景及优缺点上的区别,通过生动的例子帮助理解两种模式的应用。
1512

被折叠的 条评论
为什么被折叠?



