• java工厂模式


    工厂模式

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

    简单工厂,工厂方法,抽象工厂模式。

    面向对象的设计原则:OCP(开闭原则):软件的设计应该对扩展开放,对修改关闭

              DIP(依赖倒转原则):应该针对接口编程,不应该针对实现编程。

    简单工厂:

    例:

    //顶级接口

    public interface Car extends Runnable{

    }

    //子接口

    public class Audi implements Car{
      @Override
      public void run() {
        System.out.println("奥迪再跑");
      }
    }

    //子接口

    public class Byd implements Car{
      @Override
      public void run() {
        System.out.println("比亚迪再跑");
      }
    }

    通过给不同的工厂传不同类型的参数,返回不同的对象

    public class CarFactory {

      public Car getInstance(String type) {
        if("奥迪".equals(type)) {
          return new Audi();
        }else if("比亚迪".equals(type)) {
          return new Byd();
        }else {
          return null;
        }

      }

    }

    简单工厂也称之为静态工厂,因为只能生成已知的对象;同时,简单工厂违反了开闭原则。

    工厂方法模式

    声明一个车辆工厂的接口

    public interface CarFactory {

      public Car getInstance();

    }

    让产生不同的车辆的工厂实现抽象车辆工厂

    生产奥迪的工厂

    public class AudiFactory implements CarFactory{
    @Override
      public Car getInstance() {
        return new Audi();
      }
    }

    奥迪类

    public class Audi implements Car{
      @Override
      public void run() {
        System.out.println("奥迪再跑");
      }
    }

    当需要生产奥迪车的时候创建一个奥迪车的工厂对象

    工厂方法与静态工厂相比较而言,不用违反开闭原则,在原有基础上,增加实现类即可实现对应的功能。

    简单工厂和工厂方法比较

      简单工厂相对简单,代码复杂度相对简单。但是设计上工厂方法更加满足要求,但实际开发中简单工厂比工厂方法更加实用。

    抽象工厂

    1.抽象产品接口:定义产品的接口,公共的暴露方法。便于实际的产品类实现。

    2.具体的产品类:包含实际产品的类的逻辑处理:

    3.抽象工厂接口:定义产生系列对象的接口

    4.具体的工厂实现:实现抽象的接口工厂,返回具体的产品类的实现。

    代码略;

    抽象工厂还是针对某一个产品族进行设计的。

  • 相关阅读:
    golang 常见疑惑总结
    golang 详解defer
    golang调试工具Delve
    ACE的源码划分
    通过#define连接字符串的特殊方法[转]
    转:extern "C"的用法解析
    转:3d max 2013 安装教程,凭着一种互联网精神提供给广大朋友
    转:Bullet物理引擎不完全指南(Bullet Physics Engine not complete Guide)
    转:折腾一晚上Bullet及Ogre相关工具的成果 -- 3Ds Max,Maya, blender, GameKit
    转:CMake快速入门教程-实战
  • 原文地址:https://www.cnblogs.com/zl96291/p/10117071.html
Copyright © 2020-2023  润新知