1.简单工厂模式
主要是利用了类的继承性;通过接口的子类为接口对象实例化
简单工厂模式创建
| |
| public interface Demo { |
| public void make(String demoName); |
| } |
| |
| public class Instance1 implements Demo { |
| @Override |
| public void make(String demoName) { |
| |
| |
| |
| |
| public class Instance2 implements Demo { |
| @Override |
| public void make(String demoName) { |
| |
| |
| |
| |
简单工厂模式调用
| public static void main(String[] args) { |
| |
| Demo demo = new Instance1(); |
| demo.make("something"); |
| } |
2.普通工厂模式
普通工厂模式创建
| |
| public interface DemoFactory { |
| public Demo makeDemo(String demoName); |
| } |
| |
| public class Instance1Factory implements DemoFactory { |
| @Override |
| public Demo makeDemo(String demoName) { |
| |
| } |
| } |
| |
| public class Instance2Factory implements DemoFactory { |
| @Override |
| public Demo makeDemo(String demoName) { |
| |
| } |
| } |
普通工厂模式调用
| public static void main(String[] args) { |
| |
| DemoFactory demoFactory = new Instance1Factory(); |
| Demo instance = demoFactory.makeDemo("name"); |
| } |
小结:普通工厂在使用过程中,可以直接选取合适的工厂创建对应实例;
3.静态工厂模式
将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。
4.抽象工厂模式
抽象工厂模式创建
| |
| public interface studyJavaFactory { |
| public void studyIO(); |
| public void studyThread(); |
| } |
| |
| public class Instance1Factory implements studyJavaFactory { |
| @Override |
| public void studyIO() { |
| |
| } |
| @Override |
| public void studyThread() { |
| |
| } |
| } |
| |
| |
| |
| |
| |
| } |
| @Override |
| public void studyThread() { |
| |
| } |
| } |
抽象工厂模式调用
| public static void main(String[] args) { |
| |
| DemoFactory demoFactory = new Instance1Factory(); |
| demoFactory.studyIO(); |
| demoFactory.studyThread(); |
| } |
当涉及到产品族的时候,就需要引入抽象工厂模式。
普通工厂模式和抽象工厂模式主要是在于分类不一致,主要是通过统一工厂创建产品零件解决了产品兼容性问题:
抽象工厂模式主要是为了统一品牌下产品所需要创建的产品零件进行划分,普通工厂模式则是为了创建同类型不同品牌的产品零件进行划分;
如果抽象工厂模式只存在一个方法,则与普通工厂模式无异;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性