• 设计模式 创建型 抽象工厂


    package com.mozq.base;
    /**
     * 抽象工厂:提供一个创建一系列相关对象的接口,而不是指定它们具体的类。
     * 1.抽象工厂
     * 2.抽象产品
     * 3.具体产品
     * 4.具体工厂
     * 5.客户端使用某系列产品
     * 使用步骤:
     *     1.工厂后于产品。//工厂就是生产产品的,产品都没有设计好,无法定义工厂的功能。
     *     2.具体后于抽象。
     *     必须先定义抽象产品,才能定义生产该抽象产品的抽象工厂。
     *     必须先定义具体产品,才能定义生产该具体产品的具体工厂。
      与其他模式关系:
        因为具体工厂通常只需要一个,所以可以使用单例模式来实现。
      关键点:
        一系列相关的产品是理解抽象工厂的关键。
      比方:(鼠标,键盘)是一个系列产品。
      鼠标有华为鼠标,雷蛇鼠标,三星鼠标
      键盘有小米键盘,华为键盘。
      (华为鼠标,华为键盘)就是一个系列。客户端按照系列消费对象。而不是单个消费鼠标或者键盘。
      另一种说法:
        把(鼠标,键盘)看成一套产品,客户端则按套消费产品。
      多种类相关的产品,可以和日常生活中的三件套作比较。(枕套,被套,床单)。
      我们按照套来操作和修改。
      优缺点: 一套产品,产品种类的增删很难。但实现具体产品的不同组合很容易。
    *
    @author jie * */ /* * 1.先定义抽象产品,后定义生产该产品的抽象工厂 */ abstract class Door{ abstract void show(); } abstract class Window{ abstract void show(); } abstract class Style{ abstract Door createDoor(); abstract Door createWindow(); } /* * 2.先定义具体产品,后定义生产该产品的具体工厂 */ class DoorA extends Door{ @Override void show() { System.out.println("复古风格Door"); } } class DoorB extends Door{ @Override void show() { System.out.println("时尚风格Door"); } } class WindowA extends Door{ @Override void show() { System.out.println("复古风格Window"); } } class WindowB extends Door{ @Override void show() { System.out.println("时尚风格Window"); } } //创建具体工厂,生产一系列相关产品。 class FuGuSytle extends Style{ @Override Door createDoor() { return new DoorA(); } @Override Door createWindow() { return new WindowA(); } } class FashionSytle extends Style{ @Override Door createDoor() { return new DoorB(); } @Override Door createWindow() { return new WindowB(); } } public class AbstractFactoryDemo { public static void main(String[] args) { //客户端可以轻易地切换产品系列。 Style style = new FashionSytle(); style.createDoor().show(); style.createWindow().show(); } }
  • 相关阅读:
    链表实现python list数据类型
    python图形图像处理--验证码的制作
    Java封装、继承和抽象的实例
    C#指定几所城市的天气预报
    我的第一个全站项目纪实
    activiti集成spring
    刷新token并继续之前的请求
    微信小程序开发准备
    zookeeper和dubbo
    zookeeper
  • 原文地址:https://www.cnblogs.com/mozq/p/10438304.html
Copyright © 2020-2023  润新知