• 抽象工厂方法


    /**
     * 抽象工厂方法:抽象工厂方法是在普通工厂方法上进行扩展的,普通工厂每个工厂类只会生产一种产品,例如富士康只生产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();
        }
    }
  • 相关阅读:
    linux 学习随笔-shell基础知识
    linux 学习随笔-压缩和解压缩
    解析xml的4种方法详解
    集合工具类
    Map概述
    List集合概述
    Java集合框架
    Spring JdbcTemplate详解
    关于c3p0数据库连接池的简单使用
    Java通过JDBC封装通用DAO层
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/10905355.html
Copyright © 2020-2023  润新知