简介
通过工厂模式,我们只需要知道具体工厂的名称就可得到所需要的产品对象,而无须知道产品的具体创建过程,简而言之,就是有一个专门生产某个产品的类。
简单工厂模式实现
如下图中的鼠标工厂,专业生产鼠标,给参数0,生产戴尔鼠标,给参数1,生产惠普鼠标。
工厂模式实现
工厂模式定义了鼠标工厂抽象接口,描述生产鼠标方法。戴尔鼠标工厂,惠普鼠标工厂继承它,分别实现自己的鼠标方法。而生产哪种鼠标不再由参数决定,而是由具体的创建鼠标工厂决定,如下图结构
// 描述鼠标
interface Mouse {
void sayHi();
}
// hp鼠标
class HpMouse implements Mouse {
@Override
public void sayHi() {
System.out.println("hi hp");
}
}
// dell鼠标
class DellMouse implements Mouse {
@Override
public void sayHi() {
System.out.println("hi dell");
}
}
// 描述生产鼠标工厂的方法
interface MouseFactory {
Mouse createMouse();
}
// hp生产鼠标工厂的具体实现
class HpMouseFactory implements MouseFactory {
@Override
public Mouse createMouse() {
return new HpMouse();
}
}
// dell生产鼠标工厂的具体实现
class DellMouseFactory implements MouseFactory {
@Override
public Mouse createMouse() {
return new DellMouse();
}
}
// 测试
public class MouseFactoryExample {
public static void main(String[] args) {
MouseFactory hp = new HpMouseFactory();
hp.createMouse().sayHi();
MouseFactory dell = new DellMouseFactory();
dell.createMouse().sayHi();
}
}
/**
* hi hp
* hi dell
*/
抽象工厂模式实现
抽象工厂模式也就是不仅生产鼠标,同时生产键盘。即提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。如定义PC厂商的抽象接口,用于生产鼠标、键盘。下图戴尔工厂,惠普工厂继承它,并分别实现了自己的鼠标+键盘。
在抽象工厂模式中,假设我们需要增加一个其他品牌工厂,我们只需实现PC厂商的抽象接口,实现自己的鼠标和键盘生产方法即可。如下图增加华硕工厂结构
在抽象工厂模式中,假设我们需要增加一个产品,
只需在PC厂商的抽象接口中添加产品的生产描述,并在其他具体PC厂商中实现该产品方法即可,如下图增加耳麦这个产品后的结构
记录来源:知乎
☀>.freerme、我是lilee[https://blog.csdn.net/freerme]