Mode d'apparence du modèle de conception (y compris l'exemple complet UML)

Définir le modèle d'apparence du modèle de conception

1. Mode d'apparence

1.1 Définition et caractéristiques

  C'est un moyen de fournir une interface cohérente pour plusieurs sous-systèmes complexes. Les applications externes n'ont pas besoin de se soucier des détails spécifiques des sous-systèmes internes. Cela réduira considérablement la complexité de l'application et le nombre d'objets traités par les clients. La maintenabilité du programme.

  Le mode façade est une application typique de la "loi de Dimit", il présente les principaux avantages suivants:

  • Réduisez le couplage entre le sous-système et le client, afin que les modifications du sous-système n'affectent pas la classe client qui l'appelle.
  • Les composants du sous-système sont protégés des clients, ce qui réduit le nombre d'objets manipulés par les clients et facilite l'utilisation du sous-système.
  • Il réduit la dépendance de compilation dans les grands systèmes logiciels et simplifie le processus de migration du système entre différentes plates-formes, car la compilation d'un sous-système n'affectera pas les autres sous-systèmes, ni affectera l'apparence des objets.

  Les principaux inconvénients du mode Façade sont les suivants:

  • Il n'est pas bon de limiter les clients à utiliser des classes de sous-système.
  • L'ajout d'un nouveau sous-système peut nécessiter la modification du code source de la classe d'apparence ou du client, ce qui viole le "principe d'ouverture et de fermeture".

1.2 Structure du modèle

  Le mode façade comprend les personnages principaux suivants:

  1. Rôle de façade: fournir une interface commune pour plusieurs sous-systèmes.
  2. Rôle de sous-système (sous-système): pour réaliser une partie des fonctions du système, les clients peuvent y accéder via le rôle d'apparence.
  3. Rôle client: accédez aux fonctions de chaque sous-système via un rôle d'apparence.

1.3 Origine du problème

  Dans la conception de logiciels, lorsque la fonction d'un système devient de plus en plus forte, il y aura de plus en plus de sous-systèmes et l'accès des clients au système deviendra de plus en plus compliqué. Par exemple, ordinateur, chaque ordinateur a des modules CPU, mémoire, disque. Si tous les sous-modules sont exposés aux utilisateurs, lorsque nous allumons et éteignons l'ordinateur, nous devons allumer et éteindre le processeur, la mémoire et le disque tour à tour. Cela entraînera une utilisation très compliquée, lorsque le sous-module change, les utilisateurs seront également affectés.

1.4 Solutions

  Le mode d'apparence est utilisé pour fournir une interface cohérente pour plusieurs sous-systèmes complexes, ce qui facilite l'utilisation du client. Encapsulez certains processus complexes liés au sous-système dans une méthode d'interface unifiée, réduisez le couplage entre le sous-système et le client et réduisez le nombre d'objets traités par le client.

1.5 Types UML

Insérez la description de l'image ici

1.6 Solution

/**
 * @author 26530
 * 功能
 */
public interface Function 
{
     void start();
     void close();
}

public class CPU implements Function{

	@Override
	public void start() 
	{
		System.out.println("启动CPU");
	}

	@Override
	public void close() 
	{
		System.out.println("关闭CPU");
		
	}

}
public class Disk implements Function{

	@Override
	public void start() 
	{
		System.out.println("启动磁盘");
	}

	@Override
	public void close() 
	{
		System.out.println("关闭磁盘");
		
	}
}
public class Memory implements Function{

	@Override
	public void start() 
	{
		System.out.println("启动内存");
	}

	@Override
	public void close() 
	{
		System.out.println("关闭内存");
		
	}
}

public class Computer implements Function
{

	private CPU cpu;
	private Disk disk;
	private Memory memory;
	@Override
	public void start() 
	{
		this.cpu.start();
		this.disk.start();
		this.memory.start();
	}

	@Override
	public void close() 
	{
		this.cpu.close();
		this.disk.close();
		this.memory.close();
	}

	public Computer() 
	{
		this.cpu = new CPU();
		this.disk = new Disk();
		this.memory = new Memory();
	}
	
	

}
public class Test 
{
     public static void main(String[] args)
     {
    	 Computer computer = new Computer();
    	 computer.start();
    	 computer.close();
    	 /*
    	          启动CPU
			启动磁盘
			启动内存
			关闭CPU
			关闭磁盘
			关闭内存
    	  */
	 }
}
A publié 56 articles originaux · Like1 · Visites1168

Je suppose que tu aimes

Origine blog.csdn.net/atu1111/article/details/105489100
conseillé
Classement