zoukankan      html  css  js  c++  java
  • 抽象工厂方法

    /**
     * 抽象工厂方法:抽象工厂方法是在普通工厂方法上进行扩展的,普通工厂每个工厂类只会生产一种产品,例如富士康只生产iphone,而抽象工厂就是
     * 一个工厂可以生产多种产品,例如,富士康可以生产苹果手机,也可以生产苹果耳机
     * 该模式特点:1.有多种产品的接口以及对应的实现类(如手机接口,实现类为苹果手机和小米手机,耳机接口(实现类为苹果耳机和小米手机)
     *          2.有一个工厂接口和对应的实现类,如手机生产工厂接口,实现类纬创工厂,富士康工厂
     *          2.每个工厂类,具有同时生产多种产品的方法,例如富士康工厂,生产苹果手机和苹果耳机
     */
    
    //创建手机接口
    public interface Phone {
        void call();
    }
    
    //苹果手机对象
    public class Iphone implements Phone {
        @Override
        public void call() {
            System.out.println("使用苹果手机打电话");
        }
    }
    //小米手机
    public class MIPhone implements Phone {
        @Override
        public void call() {
            System.out.println("使用小米手机打电话");
        }
    }
    //耳机接口
    public interface Earphone {
        void listenMusic();
    }
    //苹果耳机
    public class AppleEarphone implements Earphone {
        @Override
        public void listenMusic() {
            System.out.println("用苹果耳机听音乐");
        }
    }
    //小米耳机
    public class MiEarPhone implements Earphone {
        @Override
        public void listenMusic() {
            System.out.println("使用小米耳机听音乐");
        }
    }
    //工厂接口
    public interface PhoneFactory {
        //生产手机
        Phone createPhone();
        //生产耳机
        Earphone createEarphone();
    }
    //生产苹果手机的工厂,如富士康
    public class IPhoneFactory implements PhoneFactory {
        //生产苹果手机
        @Override
        public Phone createPhone() {
            return new Iphone();
        }
        //生产苹果耳机
        @Override
        public Earphone createEarphone() {
            return new AppleEarphone();
        }
    
    }
    //生产小米手机的工厂如纬创
    public class MiPhoneFactory implements PhoneFactory {
        //生产小米手机
        @Override
        public Phone createPhone() {
            return new MIPhone();
        }
        //生产小米耳机
        @Override
        public Earphone createEarphone() {
            return new MiEarPhone();
        }
    }
    class test2{
    
        public static void main(String[] args) {
            //创建苹果手机和耳机
            PhoneFactory iPhoneFactory = new IPhoneFactory();
            iPhoneFactory.createPhone().call();
            iPhoneFactory.createEarphone().listenMusic();
            //创建小米手机和耳机
            PhoneFactory miPhoneFactory = new MiPhoneFactory();
            miPhoneFactory.createPhone().call();
            miPhoneFactory.createEarphone().listenMusic();
        }
    }
  • 相关阅读:
    js中的原生Ajax和JQuery中的Ajax
    this的用法
    static的特性
    时政20180807
    java compiler没有1.8怎么办
    Description Resource Path Location Type Java compiler level does not match the version of the installed Java project facet Unknown Faceted Project Problem (Java Version Mismatch)
    分词器
    [数算]有一个工程甲、乙、丙单独做,分别要48天、72天、96天完成
    一点感想
    解析Excel文件 Apache POI框架使用
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10905355.html
Copyright © 2011-2022 走看看