https://demo.asia.trading212.com/java
工厂模式是一种最经常使用的实例化对象模式,即用工厂方法来替代New操做的模式。
数据库
建立一个制造汽车配件的接口MakeParts
编程
package designPattern.factoryPattern.simpleFactory; public interface MakeParts { public void makeEngine(); public void makeDriver(); public void makeTire(); }
建立两个实现MakeParts接口的汽车配件制造品牌类设计模式
package designPattern.factoryPattern.simpleFactory; public class MakeBSJ implements MakeParts { @Override public void makeEngine() { System.out.println("制造保时捷的发动机"); } @Override public void makeDriver() { System.out.println("制造保时捷的驾驶系统"); } @Override public void makeTire() { System.out.println("制造保时捷的轮胎"); } }
package designPattern.factoryPattern.simpleFactory; public class MakeFLL implements MakeParts { @Override public void makeEngine() { System.out.println("制造法拉利的发动机"); } @Override public void makeDriver() { System.out.println("制造法拉利的驾驶系统"); } @Override public void makeTire() { System.out.println("制造法拉利的轮胎"); } }
建立汽车配件制造工厂ide
package designPattern.factoryPattern.simpleFactory; public class MakeCarFactory { public static MakeParts makeCar(String carType){ if("BSJ".endsWith(carType)){ return new MakeBSJ(); }else if("FLL".equals(carType)){ try { return MakeFLL.class.newInstance(); } catch (Exception e) { e.printStackTrace(); return null; } }else{ System.out.println("目前不能制造这种车辆"); return null; } } }
测试汽车配件制造工厂测试
package designPattern.factoryPattern.simpleFactory; public class GetCar { public static void main(String[] args) { MakeParts bsj = MakeCarFactory.makeCar("BSJ"); bsj.makeDriver(); bsj.makeEngine(); bsj.makeTire(); MakeParts fll = MakeCarFactory.makeCar("FLL"); fll.makeEngine(); fll.makeTire(); MakeParts bl = MakeCarFactory.makeCar("BL"); bl.makeDriver(); } }
输出结果:优化
制造保时捷的驾驶系统spa
制造保时捷的发动机设计
制造保时捷的轮胎code
制造法拉利的发动机
制造法拉利的轮胎
目前不能制造这种车辆
简单工厂模式的优缺点分析:
优势:工厂类是整个模式的关键所在。它包含必要的判断逻辑,可以根据外界给定的信息,决定究竟应该建立哪一个具体类的对象。用户在使用时能够直接根据工厂类去建立所需的实例,而无需了解这些对象是如何建立以及如何组织的。有利于整个软件体系结构的优化。
缺点:因为工厂类集中了全部实例的建立逻辑,这就直接致使一旦这个工厂出了问题,全部的客户端都会受到牵连;并且因为简单工厂模式的产品室基于一个共同的抽象类或者接口,这样一来,但产品的种类增长的时候,即有不一样的产品接口或者抽象类的时候,工厂类就须要判断什么时候建立何种种类的产品,这就和建立何种种类产品的产品相互混淆在了一块儿,违背了单一职责,致使系统丧失灵活性和可维护性。并且更重要的是,简单工厂模式违背了“开放封闭原则”,就是违背了“系统对扩展开放,对修改关闭”的原则,由于当我新增长一个产品的时候必须修改工厂类,相应的工厂类就须要从新编译一遍。
总结一下:简单工厂模式分离产品的建立者和消费者,有利于软件系统结构的优化;可是因为一切逻辑都集中在一个工厂类中,致使了没有很高的内聚性,同时也违背了“开放封闭原则”。另外,简单工厂模式的方法通常都是静态的,而静态工厂方法是没法让子类继承的,所以,简单工厂模式没法造成基于基类的继承树结构。
简单工厂模式的实际应用简介:
做为一个最基本和最简单的设计模式,简单工厂模式却有很很是普遍的应用,咱们这里以Java中的JDBC操做数据库为例来讲明。
JDBC是SUN公司提供的一套数据库编程接口API,它利用Java语言提供简单、一致的方式来访问各类关系型数据库。Java程序经过JDBC能够执行SQL语句,对获取的数据进行处理,并将变化了的数据存回数据库,所以,JDBC是Java应用程序与各类关系数据进行对话的一种机制。用JDBC进行数据库访问时,要使用数据库厂商提供的驱动程序接口与数据库管理系统进行数据交互。