• 设计模式--外观模式


     

    代码说明:

    package com.java.jikexueyuan.facademode.hometheater;
    //爆米花
    public class Popcorn {
    
        //单例模式,构造函数私有化
        private static Popcorn instance = null;
    
        private Popcorn() {
    
        }
        //单例模式创建实例
        public static Popcorn getInstance() {
            if (instance == null) {
                instance = new Popcorn();
            }
    
            return instance;
        }
        
        public void on() {
            System.out.println("Popcorn On");
        }
    
        public void off() {
            System.out.println("Popcorn Off");
        }
    
        public void pop() {
            System.out.println("Popcorn is popping");
        }
        
        
        
    }
    package com.java.jikexueyuan.facademode.hometheater;
    //DVD播放器
    public class DVDPlayer {
    
        private static DVDPlayer instance = null;
    
        private DVDPlayer() {
    
        }
    
        public static DVDPlayer getInstance() {
            if (instance == null) {
                instance = new DVDPlayer();
            }
    
            return instance;
        }
        
        public void on() {
            System.out.println("DVDPlayer On");
        }
    
        public void off() {
            System.out.println("DVDPlayer Off");
        }
    
        public void play() {
            System.out.println("DVDPlayer is playing");
        }
        
        public void pause() {
            System.out.println("DVDPlayer  pause");
        }
        
        public void setdvd() {
            System.out.println("DVDPlayer  is setting dvd");
        }
    }
    package com.java.jikexueyuan.facademode.hometheater;
    //投影仪
    public class Projector {
        private int size=5;
    
        private static Projector instance = null;
    
        private Projector() {
    
        }
    
        public static Projector getInstance() {
            if (instance == null) {
                instance = new Projector();
            }
    
            return instance;
        }
        
        public void on() {
            System.out.println("Projector On");
        }
    
        public void off() {
            System.out.println("Projector Off");
        }
    
        public void focus() {
            System.out.println("Popcorn is focus");
        }
        
        public void zoom(int size) {
            this.size=size;
            System.out.println("Popcorn zoom to"+size);
        }
        
    }
    package com.java.jikexueyuan.facademode.hometheater;
    //屏幕
    public class Screen {
    
    
    
        private static Screen instance = null;
    
        private Screen() {
    
        }
    
        public static Screen getInstance() {
            if (instance == null) {
                instance = new Screen();
            }
    
            return instance;
        }
        
        public void up() {
            System.out.println("Screen  up");
        }
    
        public void down() {
            System.out.println("Screen  down");
        }
    
        
        
        
        
    
    }
    package com.java.jikexueyuan.facademode.hometheater;
    //音响
    public class Stereo {
    
        private static Stereo instance = null;
        private int volume = 5;
    
        private Stereo() {
    
        }
    
        public static Stereo getInstance() {
            if (instance == null) {
                instance = new Stereo();
            }
    
            return instance;
        }
    
        public void on() {
            System.out.println("Stereo On");
        }
    
        public void off() {
            System.out.println("Stereo Off");
        }
    
        public void setVolume(int vol) {
    
            volume = vol;
            System.out.println("the volume of Stereo is set to  " + volume);
        }
    
        public void addVolume() {
            if (volume < 11) {
                volume++;
                setVolume(volume);
            }
    
        }
    
        public void subVolume() {
            if (volume > 0) {
                volume--;
                setVolume(volume);
            }
    
        }
    
    }
    package com.java.jikexueyuan.facademode.hometheater;
    //灯光
    public class TheaterLights {
    
        private static TheaterLights instance = null;
    
        private TheaterLights() {
    
        }
    
        public static TheaterLights getInstance() {
            if (instance == null) {
                instance = new TheaterLights();
            }
    
            return instance;
        }
    
        public void on() {
            System.out.println("TheaterLights On");
        }
    
        public void off() {
            System.out.println("TheaterLights Off");
        }
    
        public void dim(int d) {
            System.out.println("TheaterLights dim to " + d + "%");
        }
    
        public void bright() {
            dim(100);
            System.out.println("TheaterLights bright");
        }
    }
    package com.java.jikexueyuan.facademode.hometheater;
    //外观模式--遥控器
    public class HomeTheaterFacade {
        private TheaterLights mTheaterLights;
        private Popcorn mPopcorn;
        private Stereo mStereo;
        private Projector mProjector;
        private Screen mScreen;
        private DVDPlayer mDVDPlayer;
        //组合对象功能
        public HomeTheaterFacade() {
            mTheaterLights = TheaterLights.getInstance();
            mPopcorn = Popcorn.getInstance();
            mStereo = Stereo.getInstance();
            mProjector = Projector.getInstance();
            mScreen = Screen.getInstance();
            mDVDPlayer = DVDPlayer.getInstance();
        }
    
        public void ready() {
            mPopcorn.on();
            mPopcorn.pop();
            mScreen.down();
            mProjector.on();
            mStereo.on();
            mDVDPlayer.on();
            mDVDPlayer.setdvd();
            mTheaterLights.dim(10);
        }
    
        public void end() {
            mPopcorn.off();
            mTheaterLights.bright();
            mScreen.up();
            mProjector.off();
            mStereo.off();
            
            mDVDPlayer.setdvd();
            mDVDPlayer.off();
            
        }
        //单个对象功能
        public void play() {
            mDVDPlayer.play();
        }
    
        public void pause() {
            mDVDPlayer.pause();
        }
    }
    package com.java.jikexueyuan.facademode;
    
    import com.java.jikexueyuan.facademode.hometheater.HomeTheaterFacade;
    
    
    //代码测试
    public class MainTest {
        public static void main(String[] args) {
            HomeTheaterFacade mHomeTheaterFacade=new HomeTheaterFacade();
            
            mHomeTheaterFacade.ready();
            mHomeTheaterFacade.play();
        }
    }

     最少知识原则

    最少知识原则:尽量减少对象之间的交互,只留几个“密友” 项目设计中就是不要让太多的类耦合在一起

  • 相关阅读:
    vue 生产包 背景图片-background图片不显示
    数组的方法
    前端常用Utils工具函数库合集
    vue路由
    问题
    Promise与async/await -- 处理异步
    vue中axios使用
    移动端-调试工具
    微信公众平台开发(8) 自定义菜单功能开发
    微信公众平台开发(6) 翻译功能开发
  • 原文地址:https://www.cnblogs.com/lm970585581/p/9703929.html
Copyright © 2020-2023  润新知