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

    工厂模式简单的说就是通过工厂来创建对象

    简单工厂模式

    public interface Phone {
        void make();
    }
    public class MiPhone implements Phone {
        public MiPhone() {
            this.make();
        }
        @Override
        public void make() {
            // TODO Auto-generated method stub
            System.out.println("make xiaomi phone!");
        }
    }
    public class IPhone implements Phone {
        public IPhone() {
            this.make();
        }
        @Override
        public void make() {
            // TODO Auto-generated method stub
            System.out.println("make iphone!");
        }
    }
    public class PhoneFactory {
        public Phone makePhone(String phoneType) {
            if(phoneType.equalsIgnoreCase("MiPhone")){
                return new MiPhone();
            }
            else if(phoneType.equalsIgnoreCase("iPhone")) {
                return new IPhone();
            }
            return null;
        }
    }

    工厂方法模式

    和简单工厂模式中工厂负责生产所有产品相比,工厂方法模式将生成具体产品的任务分发给具体的产品工厂

    public interface AbstractFactory {
        Phone makePhone();
    }
    public class XiaoMiFactory implements AbstractFactory{
        @Override
        public Phone makePhone() {
            return new MiPhone();
        }
    }
    public class AppleFactory implements AbstractFactory {
        @Override
        public Phone makePhone() {
            return new IPhone();
        }
    }

    抽象工厂模式

    public interface PC {
        void make();
    }
    public class MiPC implements PC {
        public MiPC() {
            this.make();
        }
        @Override
        public void make() {
            // TODO Auto-generated method stub
            System.out.println("make xiaomi PC!");
        }
    }
    public class MAC implements PC {
        public MAC() {
            this.make();
        }
        @Override
        public void make() {
            // TODO Auto-generated method stub
            System.out.println("make MAC!");
        }
    }
    public interface AbstractFactory {
        Phone makePhone();
        PC makePC();
    }
    public class XiaoMiFactory implements AbstractFactory{
        @Override
        public Phone makePhone() {
            return new MiPhone();
        }
        @Override
        public PC makePC() {
            return new MiPC();
        }
    }
    public class AppleFactory implements AbstractFactory {
        @Override
        public Phone makePhone() {
            return new IPhone();
        }
        @Override
        public PC makePC() {
            return new MAC();
        }
    }
  • 相关阅读:
    数据挖掘中所需的概率论与数理统计知识、上
    pig语法学习 FOREACH GENERATE group AS
    pig flatten
    F-stack及其Nginx、redis的编译安装
    f-stack中nginx配置后make出现error: ignoring return value of ‘ftruncate’
    高速网络流量测量方法的记录
    DPDK测试用例(sample)编译
    VPP(Vector Packet Processing)配置工具
    DMA(Direct Memory Access)简介
    VPP(Vector Packet Processing)浅析
  • 原文地址:https://www.cnblogs.com/lzh66/p/13301486.html
Copyright © 2011-2022 走看看