码迷,mamicode.com
首页 > 其他好文 > 详细

23种设计模式-工厂模式

时间:2020-06-19 11:58:38      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:依赖   工厂方法模式   迪米特法则   抽象工厂   陌生人   over   null   oop   管理   

工厂模式

作用:

  实现了创建则和调用者的分离

  详细分类:

    简单工厂模式

    工厂方法模式

    抽象工厂模式

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种设计模式-工厂模式

标签:依赖   工厂方法模式   迪米特法则   抽象工厂   陌生人   over   null   oop   管理   

原文地址:https://www.cnblogs.com/yppaopao/p/13162015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!