23种设计模式-工厂模式
Posted yppaopao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了23种设计模式-工厂模式相关的知识,希望对你有一定的参考价值。
工厂模式
作用:
实现了创建则和调用者的分离
详细分类:
简单工厂模式
工厂方法模式
抽象工厂模式
OOP七大原则
开闭原则:对扩展开放,对修改关闭
依赖倒置原则:要面向接口编程,不要面向实现编程。
迪米特法则: 只与你的直接朋友交谈、不跟“陌生人”说话。
核心本质:
实例化对象不使用new,用工厂方法代替
将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
三种模式:
简单工厂模式
用来生产同一等级结构中的任意产品(对于增加的新产品,需要求盖已有的代码)
car 接口
package factory.simple; public interface Car { void name(); }
Car 工厂
package factory.simple; //静态工厂模式 //增加一个新的产品,不修改代码的情况下做不到 //开闭原则 对修改时关闭的 public class CarFactory { //方法一 public static Car getCar(String Car) { if (Car.equals("五菱")) { return new Wuling(); } else if (Car.equals("特斯拉")) { return new Tesla(); }else { return null; } } //方法二 public static Car getWuling(){ return new Wuling(); } public static Car getTesla(){ return new Wuling(); } }
两个车的类
package factory.simple; public class Tesla implements Car { @Override public void name() { System.out.println("伪神特斯拉!"); } }
package factory.simple; public class Wuling implements Car { @Override public void name() { System.out.println("五菱神车"); } }
消费者类
package factory.simple; public class Consumer { public static void main(String[] args) { //1, 口 所有的实现类! // Car car = new Wuling(); // Car car2 = new Tesla(); // 2,使用工厂创建 Car car = CarFactory.getCar("五菱"); Car car2 = CarFactory.getCar("特斯拉"); car.name(); car2.name(); } }
工厂方法模式
用来生产同一等级结构中的固定产品(支持增加任意产品)
抽象工厂模式
围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。
两个接口
Car接口
package factory.method; public interface Car { void name(); }
CarFactory接口
package factory.method; //工厂方法模式 public interface CarFactory { Car getCar(); }
car类
package factory.method; public class Tesla implements Car { @Override public void name() { System.out.println("伪神特斯拉!"); } }
car 工厂
package factory.method; public class WulingFactory implements CarFactory { @Override public Car getCar() { return new Wuling(); } }
消费者类
package factory.method; import factory.simple.CarFactory; public class Consumer { public static void main(String[] args) { Car car = new WulingFactory().getCar(); Car car1 = new TeslaFactory().getCar(); Car car2 = new MoBaiFactory().getCar(); car.name(); car1.name(); car2.name(); } //结构复杂度: simple //代码复杂度: simple //编程复杂度; simple //管理复杂度; simple //根据设计原则: 工厂方法模式! //根据实际业务: 简单工厂模式! }
以上是关于23种设计模式-工厂模式的主要内容,如果未能解决你的问题,请参考以下文章