简单工厂模式、工厂方法模式笔记

    技术2023-07-09  102

    (简单工厂模式、工厂方法模式)笔记

    学自B站狂神

    一、OOP七大原则

    开闭原则:对扩展开放,对修改关闭里氏替换原则:继承必须确保所有的性质在子类中仍然成立依赖倒置原则:要面向接口编程,不要面向实现编程单一职责原则:控制类的粒度大小,将对象解耦,提高其内聚性(类功能单一)接口隔离原则:要为各个类建立它们需要的专用接口(接口功能单一)迪米特法则:只与你的直接朋友交谈,不跟“陌生人”谈话合成复用原则:尽量使组合或者聚合等关系来实现,其次才考虑使用继承关系来实现。

    二、工厂模式

    作用:实现创建者和调用者的分离分类:简单工厂模式、工厂方法模式、抽象工厂模式

    三、简单工厂模式笔记

    1. car接口:

    package com.wu.simple; public interface Car { public void name(); }

    2. 接口实现类:

    TeslaCar.class

    package com.wu.simple; import com.wu.simple.Car; public class TeslaCar implements Car { public void name() { System.out.println("特斯拉"); } }

    WulingCar.class

    package com.wu.simple; import com.wu.simple.Car; public class WulingCar implements Car { public void name() { System.out.println("五菱宏光"); } }

    3. 管理取得实例的工厂类 :FactoryCar

    package com.wu.simple; public class FactoryCar { public static Car getCar(String car){ if(car.equals("五菱")){ return new WulingCar(); } if(car.equals("特斯拉")){ return new TeslaCar(); } if(car.equals("大众")){ return new DaZong(); } else{ return null; } } }

    4. 测试类Consumer:

    package com.wu.simple; public class Consumer { public static void main(String[] args) { //这是以前获得对象方式 WulingCar car1 = new WulingCar(); car1.name(); System.out.println("//"); //简单工厂模式 /*通过简单工厂模式,我们不用关心具体的 new WulingCar()长什么样,不用关心构造方法里面的参数 * 我们取这个对象直接通过工厂里面去取出来 */ Car car2 = FactoryCar.getCar("五菱"); car2.name(); Car car3 = FactoryCar.getCar("特斯拉"); car3.name(); //扩展一个功能: 大众 Car car4 = FactoryCar.getCar("大众"); car4.name(); /*假如我要扩展一个Car,比如大众,需要去修改FactoryCar里面的代码 * 违反了扩展对外开放,修改关闭原则 * 为了解决这个问题引入了 工厂方法模式 * 但工厂方法模式:存在多一个功能就多一个对应功能的工厂 */ } }

    四、工厂方法模式

    1. car接口:

    package com.wu.factorymthod; public interface Car { public void name(); }

    2.CarFactory接口:

    package com.wu.factorymthod; public interface CarFactory { Car getCar(); }

    3.实现类:

    TeslaCar.class

    package com.wu.factorymthod; public class TeslaCar implements Car { public void name() { System.out.println("特斯拉"); } }

    TeslaFactory.class

    package com.wu.factorymthod; public class TeslaFactory implements CarFactory { public Car getCar() { return new TeslaCar(); } }

    WulingCar.class

    package com.wu.factorymthod; public class WulingFactory implements CarFactory { public Car getCar() { return new WulingCar(); } }

    4.测试类 Consumer:

    Consumer.class

    package com.wu.factorymthod; public class Consumer { public static void main(String[] args) { //通过工厂拿到对应的Car new WulingFactory().getCar().name(); // new TeslaFactory().getCar().name(); } }

    五、总结

    结构复杂度:简单工厂模式代码复杂度:简单工厂模式编程复杂度:简单工厂模式管理复杂度:简单工厂模式

    根据设计原则:工厂方法模式

    根据实际业务:简单工厂模式

    Processed: 0.009, SQL: 9