java23种设计模式(一)工厂方法模式
2019-10-18 08:40:17来源:博客园 阅读 ()
java23种设计模式(一)工厂方法模式
在说工厂方法模式之前,先了解一下简单工厂模式。工厂方法模式其实是在简单工厂上面做了一些增强。
简单工厂模式:有一个专门的类来生产其他类的实例,生产的这些实例有一个共同父类。这个跟我们的多态有一点像。
例子:
假如我们有一个鼠标工厂,这个工厂既可以生产联想鼠标,又可以生产宏碁鼠标。
代码如下:
1、鼠标工厂(可以生产联想鼠标和宏碁鼠标)
public class MouseFactory {
/**
* 生产一个鼠标
* @param i
* @return
*/
public Mouse createMouse(int i){
Mouse mouse = null;
switch (i){
case 1:
mouse = new LenovoMouse();
break;
case 2:
mouse = new AcerMouse();
break;
}
return mouse;
}
}
2、鼠标接口(有一个getName()的方法)
public interface Mouse {
void getName();
}
3、联想鼠标实现类(实现鼠标接口,可以生产联想鼠标)
public class LenovoMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是联想鼠标");
}
}
4、宏碁鼠标实现类(实现鼠标接口,可以生产宏碁鼠标)
public class AcerMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是宏碁鼠标");
}
}
5、客户端(需要鼠标的人,可以买联想鼠标也可以买宏碁鼠标)
@SpringBootTest
class FactoryApplicationTests {
@Test
void contextLoads() {
MouseFactory factory = new MouseFactory();
Mouse mouse = factory.createMouse(2);
mouse.getName();
}
这样简单工厂就算实现了,可以传入1和2让工厂分别生成联想鼠标和宏碁鼠标。
接下来我们在简单工厂的基础上看看工厂方法模式。
工厂方法模式:定义一个专门生产其他类实例的接口,让子类决定具体生产哪个类的实例。
例子:
有一个鼠标工厂开了两个子公司,一个是联想鼠标工厂用来专门生产联想鼠标,另一个是宏碁鼠标工厂用来专门生产宏碁鼠标。
代码如下:
1、鼠标工厂接口:
public interface MouseFactory {
Mouse createMouse();
}
2、联想鼠标工厂(用来生产联想鼠标)
public class LenovoMouseFactory implements MouseFactory {
@Override
public Mouse createMouse() {
return new LenovoMouse();
}
}
3、宏碁鼠标工厂(用来生产宏碁鼠标)
public class AcerMouseFactory implements MouseFactory {
@Override
public Mouse createMouse() {
return new AcerMouse();
}
}
鼠标类跟简单工厂一样,复制如下:
4、鼠标接口(有一个getName()的方法)
public interface Mouse {
void getName();
}
5、联想鼠标实现类(实现鼠标接口,可以生产联想鼠标)
public class LenovoMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是联想鼠标");
}
}
6、宏碁鼠标实现类(实现鼠标接口,可以生产宏碁鼠标)
public class AcerMouse implements Mouse {
@Override
public void getName() {
System.out.println("这个是宏碁鼠标");
}
}
7、客户端(需要鼠标的人,可以买联想鼠标也可以买宏碁鼠标)
@SpringBootTest
class FactoryApplicationTests {
@Test
void demo(){
LenovoMouseFactory lenovoMouseFactory = new LenovoMouseFactory();
Mouse lenovoMouse = lenovoMouseFactory.createMouse();
lenovoMouse.getName();
AcerMouseFactory acerMouseFactory = new AcerMouseFactory();
Mouse acerMouse = acerMouseFactory.createMouse();
acerMouse.getName();
}
}
我们可以通过不同的工厂来获取不同实例,假如我们想买一个联想鼠标,则去联想工厂买。想买宏碁鼠标,则去宏碁工厂买。
这样,我们就实现了工厂方法模式,假如我们想要一个华硕鼠标,则建一个华硕工厂去生产华硕鼠标即可。
如果文章对您有帮助,请记得点赞关注哟~
欢迎大家关注我的公众号<情系IT>,每日技术推送文章供大家学习参考。
原文链接:https://www.cnblogs.com/zhixie/p/11696327.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 如何干掉 if else 策略+工厂 2020-06-11
- 设计模式-委派/策略模式 2020-06-09
- 深入理解:设计模式中的七大设计原则 2020-06-07
- 设计模式---类之间的关系知多少 2020-06-07
- Java--Java的设计模式----单例模式 2020-05-26
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash