抽象工厂模式
定义:
抽象工厂模式和工厂模式很相似,只是它利用接口或者抽象类定义了一个产品族,例如定义一个拨号产品族,只定义功能,不关心实现,具体实现交给Android、ios等操作系统自己完成。
角色:抽象工厂、具体工厂、抽象产品族、抽象产品、具体产品
实现如下:
//抽象产品族
//abstract class Product{}
//抽象产品
public abstract class AbstractProductA {}
public abstract class AbstractProductB {}
//具体产品A1
public class ConcreteProductA1 extends AbstractProductA {}
//具体产品A2
public class ConcreteProductA2 extends AbstractProductA {}
//具体产品B1
public class ConcreteProductB1 extends AbstractProductB {}
//具体产品B2
public class ConcreteProductB2 extends AbstractProductB {}
//抽象工厂
public abstract class AbstractFactory{
public abstract AbstractProductA createProductA();
public abstract AbstractProductB createProductB();
}
//具体工厂
public class ConcreteFactoryA extends AbstractFactory{
@override
public AbstractProductA createProductA(){
return new ConcreteProductA1();
}]
@override
public AbstractProductB createProductB(){
return new ConcreteProductB1();
}
}
-
优点:
- 降低耦合
- 符合开闭原则
- 符合单一指责原则
- 不适用静态工厂方法,可以形成基于继承的等级结构。
-
缺点:难以扩展新种类产品
大家有什么不清楚的地方可点击下面链接,尤为详细。
网友评论