zoukankan      html  css  js  c++  java
  • 抽象工厂模式

    简介

      抽象工厂模式在工厂模式上添加了一个创建不同工厂的抽象接口(抽象类或接口实现),该接口可叫做超级工厂。在使用过程中,我们首先通过抽象接口创建出不同的工厂对象,然后根据不同的工厂对象创建不同的对象。

    具体实现

      1.抽象工厂定义如下

    public abstract class AbstractFactory {
        public abstract Phone createPhone(String brand);
        public abstract Computer createComputer(String brand);
    }

      抽象类AbstractFactory,是抽象工厂的核心类,它定义了两个方法,分别返回手机和电脑。

      2.手机接口及其实现类

    public interface Phone {
        String call();
    }
    public class PhoneApple implements Phone {
        @Override
        public String call() {
            return "call somebody by apple phone";
        }
    }
    public class PhoneHuaWei implements Phone {
        @Override
        public String call() {
            return "call somebody by huawei phone";
        }
    }

      3.电脑接口及其实现类

    public interface Computer {
        String internet();
    }
    public class ComputerApple implements Computer {
        @Override
        public String internet() {
            return "surf the internet by apple computer";
        }
    }
    public class ComputerHuaWei implements Computer {
        @Override
        public String internet() {
            return "surf the internet by huawei computer";
        }
    }

      4手机工厂类定义如下

    public class PhoneFactory extends AbstractFactory {
        @Override
        public Phone createPhone(String brand) {
            if("HuaWei".equals(brand)){
                return new PhoneHuaWei();
            }else if("Apple".equals(brand)){
                return new PhoneApple();
            }else
                return null;
        }
    
        @Override
        public Computer createComputer(String brand) {
            return null;
        }
    }

      5.电脑工厂类定义如下

    public class ComputerFactory extends AbstractFactory {
        @Override
        public Phone createPhone(String brand) {
            return null;
        }
    
        @Override
        public Computer createComputer(String brand) {
            if("HuaWei".equals(brand)){
                return new ComputerHuaWei();
            }else if("Apple".equals(brand)){
                return new ComputerApple();
            }else
                return null;
        }
    }

      6使用抽象工厂模式

    public class Test {
        public static void main(String[] args) {
            AbstractFactory phoneFactory = new PhoneFactory();
            Phone phoneHuawei = phoneFactory.createPhone("HuaWei");
            Phone phoneApple = phoneFactory.createPhone("Apple");
            System.out.println(phoneApple.call());
            System.out.println(phoneHuawei.call());
    
            AbstractFactory computerFactory = new ComputerFactory();
            Computer computerHuawei = computerFactory.createComputer("HuaWei");
            Computer computerApple = computerFactory.createComputer("Apple");
            System.out.println(computerApple.internet());
            System.out.println(computerHuawei.internet());
        }
    }

      结果

    call somebody by apple phone
    call somebody by huawei phone
    surf the internet by apple computer
    surf the internet by huawei computer
  • 相关阅读:
    AJAX
    JQUERY基础
    PHP 数据库抽象层pdo
    会话控制:session与cookie
    php 如何造一个简短原始的数据库类用来增加工作效率
    php 数据访问(以mysql数据库为例)
    面向对象设计原则
    php 设计模式 例子
    PHP中静态与抽象的概念
    键盘的按钮键名
  • 原文地址:https://www.cnblogs.com/silentteller/p/12799452.html
Copyright © 2011-2022 走看看