这先说下我对接口的认识,接口也是一个特殊的类,它能每一个他的子类都必须使用他的一个方法,有主助于代码的统一,实现设计模式的简洁化
工厂模式:最简单的理解就是各尽其职,模块化问题,提高效率
1.0简单工厂
public interface Car { void run(); } public class Audi implements Car { @Override public void run() { System.out.println("I am AUdi"); } } public class BiYaDi implements Car { @Override public void run() { System.out.println("I am BiYaDi"); } } /* * 实现了创建者和调用者的分离 * */ /* * 面向对象的设计原则 *OCP 一个软件的实体应该对扩展开放 对修改关闭 * DIP 针对接口编程 而不是针对实现编程 * 直与你直接的朋友通讯 避免和陌生人通讯 * */ //简单工厂模式 //不能直接增加子类,得改代码,破坏了开闭原则 public class Car_Factory1 { public static Car Create_Car(String Type) { if("Audi".equals(Type)) { return new Audi(); } else { return new BiYaDi(); } } //第二种直接返回也可以 public static Car Create_Audi() { return new Audi(); } public static Car Create_BiYaDi() { return new BiYaDi(); } } /*全部的工作都在这一个公司,所以要不断地破坏结构*/ public class Test_1 { public static void main(String[] args) { Car C1= Car_Factory1.Create_Car("Audi"); Car C2= Car_Factory1.Create_Car("BiYaDi"); C1.run(); C2.run(); } }
2.0工厂方法
3.0抽象工厂
代码
-----------------------------------------------------------------------------非代码部分------------------------------
简单工厂:使用起来非常的简单,但是不太符合开闭原则,扩展性不太好
工厂方法:完全满足开闭原则 复杂程度比较高,修改的话相互独立,但是很麻烦
选择:虽然满足开闭原则很好,但是简单工厂用的是真的多
抽象工厂:
* 抽象工厂用来生产不同产品族(高端低端的区别)的全部产品(完整的汽车),对于新添加的产品无能为力,但是可以添加产品族
用起来真的是很麻烦,但是方便数据的管理