直接上代码,之后再对代码做说明:
1、产品接口:
package dm.factory.one;
/**
*
* @ClassName Mouse
* @Description 产品接口【鼠标】
* @author wyn
* @Date 2018年10月12日 上午9:43:04
* @version 1.0.0
*/
public interface Mouse {
/**
* @Description 业务方法
*/
void doSomething();
}
2、产品实现一:
package dm.factory.one;
/**
*
* @ClassName BaiDuMouse
* @Description 百度鼠标
* @author Administrator
* @Date 2018年10月12日 上午10:08:24
* @version 1.0.0
*/
public class BaiDuMouse implements Mouse{
@Override
public void doSomething() {
System.out.println("====>>>我是百度鼠标");
}
}
3、产品实现二:
package dm.factory.one;
/**
*
* @ClassName ALiMouse
* @Description 阿里巴巴鼠标
* @author wyn
* @Date 2018年10月12日 上午10:08:00
* @version 1.0.0
*/
public class ALiMouse implements Mouse{
@Override
public void doSomething() {
System.out.println("====>>>我是阿里巴巴鼠标");
}
}
4、工厂接口:
package dm.factory.one;
/**
*
* @ClassName Factory
* @Description 工厂接口
* @author wyn
* @Date 2018年10月12日 上午9:48:38
* @version 1.0.0
*/
public interface Factory {
/**
* @Description 生产方法
* @return 产品接口
*/
Mouse produce();
}
5、产品一工厂实现:
package dm.factory.one;
/**
*
* @ClassName BaiDuMouseFactory
* @Description 百度鼠标工厂
* @author wyn
* @Date 2018年10月12日 上午9:53:28
* @version 1.0.0
*/
public class BaiDuMouseFactory implements Factory {
@Override
public Mouse produce() {
return new BaiDuMouse();
}
}
6、产品二工厂实现:
package dm.factory.one;
/**
*
* @ClassName BaiDuMouseFactory
* @Description 阿里巴巴鼠标工厂
* @author wyn
* @Date 2018年10月12日 上午9:57:19
* @version 1.0.0
*/
public class ALiMouseFactory implements Factory {
@Override
public Mouse produce() {
return new ALiMouse();
}
}
7、客户端调用:
package dm.factory.one;
/**
*
* @ClassName Client
* @Description 客户端
* @author wyn
* @Date 2018年10月12日 上午9:58:17
* @version 1.0.0
*/
public class Client {
public static void main(String[] args){
Factory factory = new BaiDuMouseFactory();
Mouse mouse = factory.produce();
mouse.doSomething();
System.out.println("-------------------");
factory = new ALiMouseFactory();
mouse = factory.produce();
mouse.doSomething();
}
}
8、调用结果:
====>>>我是百度鼠标
-------------------
====>>>我是阿里巴巴鼠标
以上就是工厂模式的具体实现,工厂模式比较简单,可以理解为:
一个产品接口,多个产品实现;
一个工厂接口,多个工厂实现,每个工厂实现只针对一种产品实现来生产具体的产品对象。
上面代码可以理解为 百度和阿里巴巴都有自己品牌的鼠标产品,并且都有自己鼠标工厂来生产自己品牌的鼠标产品。
如果腾讯也要生产自己品牌的鼠标,那就是添加一个腾讯鼠标的实现类和腾讯鼠标工厂的实现类即可。
抽象工厂模式链接:https://blog.csdn.net/wynking1985/article/details/83026930