"Head First Design Patterns" notas de estudio - Modo de piel

Modo de piel, cambiar la interfaz, diseñado para simplificar la interfaz, la complejidad de todos de una o varias clases, se oculta detrás, sólo para revelar un aspecto limpio y brillante.

caso

Vemos películas en su propio cine en casa, de acuerdo con la forma más problemático, entonces tenemos que seguir estos pasos:

  1. máquina de palomitas abierto
  2. Inicio palomitas
  3. Apagar las luces
  4. pantalla hacia abajo
  5. Encender el proyector
  6. La entrada al proyector se enciende de DVD
  7. El proyector se proporciona de modo panorámico
  8. amplificador abierto
  9. El ataque puesto que la entrada está ajustado en DVD
  10. El amplificador está configurado para sonido envolvente
  11. El volumen del amplificador a la
  12. Abrir DVD
  13. Empieza a jugar un DVD

Estos pasos se realizan, empezamos a ver una película, después de ver la película, queremos que todo cerrado, no se puede poner estos pasos operación inversa de nuevo, por lo que es conveniente el modo de procesamiento en conjunto con la aparición de más.

Nos fijamos en el código específico.

public class HomeTheaterFacade {
    Amplifier amp;
    Tuner tuner;
    DvdPlayer dvd;
    CdPlayer cd;
    Projector projector;
    TheaterLights lights;
    Screen screen;
    PopcornPopper popper;

    public HomeTheaterFacade(Amplifier amp, Tuner tuner, DvdPlayer dvd, CdPlayer cd, Projector projector, TheaterLights lights, Screen screen, PopcornPopper popper) {
        this.amp = amp;
        this.tuner = tuner;
        this.dvd = dvd;
        this.cd = cd;
        this.projector = projector;
        this.lights = lights;
        this.screen = screen;
        this.popper = popper;
    }

    public void watchMovie(String movie) {
        System.out.println("Get ready to watch a movie...");
        popper.on();
        popper.pop();
        lights.dim(10);
        screen.down();
        projector.on();
        projector.wideScreenMode();
        amp.on();
        amp.setDvd(dvd);
        amp.setSurroundSound();
        dvd.on();
        dvd.play(movie);
    }

    public void endMovie() {
        System.out.println("Shutting movie theater down...");
        popper.off();
        lights.on();
        screen.up();
        projector.off();
        amp.off();
        dvd.stop();
        dvd.eject();
        dvd.off();
    }
}

Este es nuestro código apariencia de cine en casa. Contiene muchos componentes del subsistema envasados ​​en combinación en esta clase. Ahora debemos integrar estos componentes en una interfaz unificada, escribir dos métodos, uno (películas de cuerda) watchMovie un endMovie (), que necesita un cine que hay que hacer es mirar a la integración de las operaciones, es el final de una necesidad de integración reproductor de películas.

Ahora nos fijamos en el código del componente es muy simple.

public class Amplifier {
    public void on() {
        System.out.println("Amplifier on");
    }

    public void setDvd(DvdPlayer dvd) {
        System.out.println("Set dvd");
    }

    public void setSurroundSound() {
        System.out.println("Surround sound");
    }

    public void off() {
        System.out.println("Amplifier off");
    }
}

public class CdPlayer {}

public class DvdPlayer {
    public void on() {
        System.out.println("Dvd on");
    }

    public void play(String movie) {
        System.out.println("Play " + movie);
    }

    public void stop() {
        System.out.println("Dvd stop");
    }

    public void eject() {
        System.out.println("Dvd eject");
    }

    public void off() {
        System.out.println("Dvd off");
    }
}

public class PopcornPopper {
    public void on() {
        System.out.println("Popcorn popper on");
    }

    public void pop() {
        System.out.println("Making popcorn");
    }

    public void off() {
        System.out.println("Popcorn popper off");
    }
}

public class Projector {
    public void on() {
        System.out.println("Projector on");
    }

    public void wideScreenMode() {
        System.out.println("Wide screen mode");
    }

    public void off() {
        System.out.println("Projector off");
    }
}

public class Screen {
    public void down() {
        System.out.println("Screen down");
    }

    public void up() {
        System.out.println("Screen up");
    }
}

public class TheaterLights {
    public void dim(int i) {
        System.out.println("Light dim " + i);
    }

    public void on() {
        System.out.println("Light on");
    }
}

public class Tuner {}

Es una colección de todas las necesidades del sistema en subconjuntos, que proporcionan alguna forma para las clases de cine en casa a su uso. Cuando usamos, crear primero una instancia de estos componentes, y luego declarar una instancia de clase de teatro constructor de casa, entonces sólo tenemos que llamar dos métodos se pueden declarar simplemente ver películas y detener la película.

public class HomeTheaterTestDrive {
    public static void main(String[] args) {
        Amplifier amplifier = new Amplifier();
        Tuner tuner = new Tuner();
        DvdPlayer dvdPlayer = new DvdPlayer();
        CdPlayer cdPlayer = new CdPlayer();
        Projector projector = new Projector();
        TheaterLights theaterLights = new TheaterLights();
        Screen screen = new Screen();
        PopcornPopper popcornPopper = new PopcornPopper();

        HomeTheaterFacade homeTheater = new HomeTheaterFacade(amplifier, tuner, dvdPlayer, cdPlayer, projector, theaterLights, screen, popcornPopper);

        homeTheater.watchMovie("电影");
        System.out.println();
        homeTheater.endMovie();
    }
}

clase de prueba, declaramos por encima de un montón de componentes, como hemos mencionado anteriormente, se utilizó la última vez, simplemente llame a los dos métodos, entonces todo está hecho nuestro trabajo, cuando vamos a ver la película, Sólo es necesario poner en ver la película, cuando termine, sólo es necesario para llevar a cabo el método () endMovie.

Aspecto definición del patrón

patrón de la fachada proporciona una interfaz unificada, la interfaz que se utiliza para acceder a un subsistema de grupo. La aparición de una interfaz de alto nivel que permite el subsistema más fácil de usar.

Esto se apreciará fácilmente, es proporcionar una interfaz simple que hace que el subsistema más fácil de usar, es similar a un mando a distancia, al pulsar un interruptor de control remoto, una serie de operaciones subsistema, fácil de operar nuestro cliente, el cliente sólo tiene que pulsar este botón, que es sólo una simple analogía.

También implica un nuevo principio de diseño: principio de "conocimientos mínimos", sólo sus amigos cercanos y hablar.

Al diseñar un sistema, si se trata de cualquier objeto, se debe prestar atención a ella y qué tipo de interacción, y prestar atención a ella y cómo la interacción de estas clases. Constantemente nos recuerdan, no deje demasiado como el diseño del sistema se acoplan entre sí para evitar efectivamente afectar a todo el cuerpo, para modificar parcialmente el sistema, que afectará a otras partes. Reducir los costes de mantenimiento del sistema.

Por lo tanto, en el método de este objeto, simplemente llame al método dentro de los siguientes rangos:

  • El propio objeto
  • Objeto como un parámetro pasa en el método
  • Este método cualquier objeto creado o instanciado
  • Cualquier objeto componente

En este caso, el modo de aspecto es más, es muy simple.

Publicado 26 artículos originales · ganado elogios 2 · Vistas 2325

Supongo que te gusta

Origin blog.csdn.net/qq_42909545/article/details/104975581
Recomendado
Clasificación