java23种设计模式(二)抽象工厂模式
程序员文章站
2022-05-31 22:38:40
我们接着上一章的工厂方法模式继续学习一下抽象工厂模式。 抽象工厂模式:在工厂模式中,如果有多个产品,则就是抽象工厂模式。 例子: 有一个工厂开了两个子公司,专门用来生产电脑配件键盘和鼠标,一个是联想工厂则生产联想的产品,另一个是宏碁工厂则生产宏碁的产品。 代码如下: 1、工厂接口(可以生产鼠标和键盘 ......
我们接着上一章的工厂方法模式继续学习一下抽象工厂模式。
抽象工厂模式:在工厂模式中,如果有多个产品,则就是抽象工厂模式。
例子:
有一个工厂开了两个子公司,专门用来生产电脑配件键盘和鼠标,一个是联想工厂则生产联想的产品,另一个是宏碁工厂则生产宏碁的产品。
代码如下:
1、工厂接口(可以生产鼠标和键盘)
public interface factory { // 生产鼠标 mouse createmouse(); // 生产键盘 keyboard createkeyboard(); }
2、联想工厂(生产联想鼠标和键盘)
public class lenovofactory implements factory { @override public mouse createmouse() { return new lenovomouse(); } @override public keyboard createkeyboard() { return new lenovokeyboard(); } }
3、宏碁工厂(生产宏碁鼠标和键盘)
public class acerfactory implements factory { @override public mouse createmouse() { return new acermouse(); } @override public keyboard createkeyboard() { return new acerkeyboard(); } }
4、键盘接口
public interface keyboard { void getname(); }
5、联想键盘实现类
public class lenovokeyboard implements keyboard { @override public void getname() { system.out.println("这个是联想键盘"); } }
6、宏碁键盘实现类
public class acerkeyboard implements keyboard { @override public void getname() { system.out.println("这个是宏碁键盘"); } }
7、鼠标接口
public interface mouse { void getname(); }
8、联想鼠标接口
public class lenovomouse implements mouse { @override public void getname() { system.out.println("这个是联想鼠标"); } }
9、宏碁鼠标接口
public class acermouse implements mouse { @override public void getname() { system.out.println("这个是宏碁鼠标"); } }
10、客户端(可以在联想工厂买联想鼠标和键盘,也可以在宏碁工厂买宏碁生产的鼠标和键盘)
@springboottest class factoryapplicationtests { @test void abstractf(){ lenovofactory lenovofactory = new lenovofactory(); lenovofactory.createkeyboard().getname(); lenovofactory.createmouse().getname(); acerfactory acerfactory = new acerfactory(); acerfactory.createkeyboard().getname(); acerfactory.createmouse().getname(); } }
总结:
(1)增加xx工厂:创建xx工厂,继承工厂接口,然后创建xx鼠标继承鼠标接口,创建xx键盘继承键盘接口即可。
(2)增加音响产品:首先创建音响接口,然后分别创建联想音响和宏碁音响实现类实现音响接口。然后再工厂接口中增加创建音响的方法,在联想工厂和宏碁工厂分别实现自家音响的创建。
如果文章对您有帮助,请记得点赞关注哟~
欢迎大家关注我的公众号,每日技术推送文章供大家学习参考。情系it>
下一篇: 龙利鱼多少钱一斤?都有哪些营养价值呢?