咱们都晓得设计模式有五大准则
  1. 繁多职责准则:实现类要职责繁多。
  2. 开闭准则:对扩大凋谢,对批改敞开。
  3. 里氏替换准则:不要毁坏继承体系。
  4. 接口隔离准则:设计接口的时候要精简繁多。
  5. 依赖倒置准则:要面向接口编程。
理解完设计模式的五大准则后,因为简略工厂模式即是利用工厂来返回所需的实例化对象,而工厂办法则是利用实现接口后的对象工厂来返回实例化的对象。而前两种都有肯定的毛病
  1. 简略工厂模式(动态工厂模式):违反了开闭准则,耦合度较高
  2. 工厂办法模式:属于多态工厂模式,定义创立产品对象的工厂接口,将理论创立工作推延到子类中,但调用类呈现创建对象逻辑,违反繁多职责准则,减少了我的项目开发的复杂度

## 形象工厂模式
## 产品接口和实现类

public interface Engine {  //举例引擎,其余的省略    void run();}class HighEndEngine implements Engine {    @Override    public void run() {        System.out.println("高端发动机,启动快");    }    }class LowEndEngine implements Engine {    @Override    public void run() {        System.out.println("低端发动机,启动慢");    }}

工厂接口

public interface CarFactory {    Engine createEngine();        Tyre createTyre();        Seat createSeat();}

工厂实现类

public class HighEndCarFactory implements CarFactory {    @Override    public Engine createEngine() {        return new HighEndEngine();    }    @Override    public Tyre createTyre() {        return new HighEndTyre();    }    @Override    public Seat createSeat() {        return new HighEndSeat();    }}public class LowEndCarFactory implements CarFactory {    @Override    public Engine createEngine() {        return new LowEndEngine();    }    @Override    public Tyre createTyre() {        return new LowEndTyre();    }    @Override    public Seat createSeat() {        return new LowEndSeat();    }}

客户端调用

public class Client {    public static void main(String[] args) {        CarFactory cf = new HighEndCarFactory();                Engine engine = cf.createEngine();                Tyre tyre = cf.createTyre();                Seat seat = cf.createSeat();    }}

简略了解,高端工厂类只制作高端产品,例如高端引擎、高端轮胎以及高端座椅等,当产品族中新增几个产品,只需创立产品类以及在对应的工厂类中增加对应的办法即可。

总结

在应用设计模式时,很难遵循五大准则和一大法令。咱们应用设计模式是为了让代码具备可复用性、可扩展性和灵活性,不能一味地守着这几个规定,从而限度本人对编程的设想和施展。因而,须要应用怎么的设计模式还得依据我的项目的理论需要来掂量抉择。
这就跟咱们的数据库三大范式一样,咱们很难一样地遵循三大范式,有时候为了性能以及查问之类的效率,会减少点数据冗余。