简单工厂模式属于创建型模式又叫做静态工厂方法模式,它属于类创建型模式。
它是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
在简单工厂模式中,可以根据参数的不同返回不同类的实例。
简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
创建抽象产品类
我们创建一个抽象产品类,他有一个抽象方法用于启动做菜:
package 软件工程作业; public abstract class Product { /** * 产品的抽象方法,由具体的产品类去实现 */ public abstract void start(); }
创建具体菜品类
接着我们创建各个不同的菜A、B、C,他们都继承了他们的父类Product ,并实现了父类的start方法:
package 软件工程作业; public class Aproduct extends Product{ @Override public void start() { System.out.println("开始做菜A"); } }
package 软件工程作业; public class Bproduct extends Product{ @Override public void start() { System.out.println("开始做菜B"); } }
package 软件工程作业; public class Cproduct extends Product{ @Override public void start() { System.out.println("开始做菜C"); } }package 软件工程作业;
接下来创建一个工厂类,它提供了一个静态方法cookProduct用来做菜。你只需要传入你想做的菜名,它就会实例化相应品牌的菜对象:
package 软件工程作业; public class Factory { public static Product cookProduct(String type){ Product m=null; switch (type) { case "A": m=new Aproduct(); break; case "B": m=new Bproduct(); break; case "C": m=new Cproduct(); break; } return m; } }
客户端调用工厂类,传入“A”生产出菜A并调用该菜的start方法:
package 软件工程作业; public class Cookproduct { public static void main(String[]args){ Factory.cookProduct("A").start(); } }
终端输出结果:
通过写一个抽象类里面有一个抽象方法,别的类继承抽象类,重写抽象类中的抽象方法实现了一种多态。
利用抽象类实现。
每个不同类实现不同的抽象方法,需要什么类什么方法就加上什么类什么方法,提高了模块的内聚度,降低了模块之间的耦合度。实现了“开放-封闭”原则,这样模块更加清晰,每个部分都各司其职,分工明确,可维护性更好。
原文:https://www.cnblogs.com/zzydexiaowu/p/12003385.html