[JAVA] Suite: La parabole de la POO (omise)

C'est chaud

J'ai écrit cet article avant, mais après un long moment, la tendance a changé avec le matériel POO. ~~ Ça brûle ~~ N'est-ce pas brûlant? Alors, réfléchis un peu plus à ça En raison de l'organisation, les classes abstraites et les interfaces auxquelles je pense Comme ça! Je voudrais exprimer l'idée. Mes pensées sont C'est une déclaration que c'est le cas. La pensée est semblable à Java.

Qu'est-ce qu'une interface

L'interface exécutable de Java est facile à comprendre, mais représente la fonctionnalité que vous souhaitez implémenter La poignée (l'image d'une poignée de voiture, d'une poignée de panier ou d'un bouton de porte) en pensant. En termes d'interface Runnable

--Une interface qui exprime la méthode que vous souhaitez implémenter en tant que thread

Il fournit une fonction très pratique. La classe implémentée est La fonctionnalité de l'interface devrait être garantie sans que personne ne le sache Ainsi, l'implémenteur est libre d'implémenter l'interface et l'utilisateur est la méthode Il peut être utilisé en se concentrant uniquement sur la fonction de.

Il est impossible de mettre en œuvre une telle fonction dans la réalité, mais comme moyen d'expression du sens Considérons ensuite l'interface d'une poignée de voiture.

CarHandle.java


public interface CarHandle
{
    int turnRight(int angle); //Renvoie l'angle après l'exécution
    int turnLeft(int angle);
    void hold();
    void release(); //Lâchez la poignée et laissez-la bouger naturellement
}

L'interface CarHandle déclare la fonction d'une poignée de voiture. Par conséquent, peu importe le type de véhicule sur lequel l'objet Concrete est monté. Selon les caractéristiques des objets tels que les voitures légères, les berlines et les monospaces La mise en œuvre peut mettre en œuvre le fonctionnement de l'interface.

De plus, l'objet Concrete de la destination d'implémentation fournit l'interface CarHandle. Il est également bon de recevoir l'objet handle implémenté. Vous n'avez pas besoin de savoir quelles sont les caractéristiques du manche, mais l'interface exprime La fonction à faire est implémentée.

Objet de poignée d'origine du fabricant avec interface CarHandle Ou je vais le personnaliserMomoste Objet! Des choses amusantes comme Sera créé.

Alors, qu'est-ce qu'une classe abstraite?

En un mot, je pense que c'est une pièce de kit semi-finie. Par exemple. Le même âge que moi (en parlant de gens qui restent coincés) Certaines personnes peuvent être enthousiasmées par leur propre PC. Boîtier, alimentation, mère, par vous-même J'ai acheté un processeur, un disque dur, un module de mémoire et un GPU en partie, et je l'aime bien. Assembler et utiliser un PC performant et économique, c'est exactement ça C'était une pièce passionnante.

Et le temps passe et les fabricants de BTO sont bondés. Détails de la commande de l'acheteur sur le Web Il vous livrera un PC personnalisé à votre goût sous la forme d'un produit fini. Mais dans la boutique Par conséquent, le contenu pouvant être personnalisé varie et n'atteint pas les spécifications idéales. Parfois, je n'ai pas choisi ce magasin.

À propos (bien que ce soit une longue introduction), il existe un magasin BTO qui vend des PC en tant que produits semi-finis. Il est finalement apparu (en supposant qu'il n'existe pas vraiment). De l'acheteur Les parties moins importantes à examiner (cas, mères, disques durs, etc.) sont décentes Les spécifications peuvent être sélectionnées et les parties centrales importantes (CPU, GPU, module de mémoire) Est une boutique qui vend des PC avec des mannequins. Bien sûr, des pièces du kit Ne fonctionne pas dans l'état (ne peut pas être instancié).

Par conséquent, l'acheteur (réalisateur) a acheté les pièces de base (classe des pièces du kit). Le processeur est Core i9, le GPU est GeForce RTX, la mémoire est de 8 Go de DDR4 Vous pouvez créer un PC comme celui-ci avec 4 cartes et 32 Go.

AbstractPC.java


public abstract class AbstractPC
{
    public int case()  //Le cas étant sélectionné par BTO, il a déjà été implémenté
    {
        //Je ne pense pas que ce soit un traitement de cas
    }
    public int powerUnit() //L'alimentation étant sélectionnée par BTO, elle est déjà installée
    {
        //Je ne pense pas que ce soit du traitement de puissance
    }
    public int motherBoard() //La mère est déjà implémentée car elle est sélectionnée par BTO
    {
        //Je ne pense pas que ce soit le processus d'une mère
    }
    abstract int cpu(int model_no); //Achetez vous-même le processeur
    abstract int gpu(int model_no); //Achetez votre propre GPU
    abstract int memory(int model_no, int nums); //Achetez vous-même de la RAM
}

Hériter de ce gars et acheter (implémenter) CPU, GPU, module de mémoire Cela permet de fabriquer à la fois des PC super cospa et des PC haut de gamme. Strictement haute performance Lors de la fabrication d'un PC, il y a des détails tels que la capacité d'alimentation et l'efficacité d'échappement de la chaleur du boîtier, mais Je n'y penserai pas pour le moment.

En termes d'avantages et de commodité de la classe Abstract, elle a déjà été corrigée. N'implémentez que la partie du framework qui n'est pas facilement affectée par les changements de spécification même si elle est implémentée Cependant, le traitement auquel vous souhaitez répondre aux modifications est personnalisé en fonction de la zone applicable. Je pense qu'il est possible de répondre à la demande de mise en œuvre.

Pour être honnête, les classes abstraites sont plus utiles que la commodité de l'interface. J'ai l'impression qu'il est difficile et peu utilisé. Encore partiellement mis en œuvre La commodité de pouvoir implémenter de manière optimale uniquement la partie centrale est précieuse.

au fait···

J'ai cherché diversement entre-temps, mais dans une théorie de l'évolution typique Je ne peux pas m'empêcher de désespérer parce que je suis fou des gens qui en sont dépendants. Non, Je comprends le désir d'expliquer dans la théorie évolutionniste. Mais comme un chien ou un chat, Que vous implémentiez ou héritiez d'un objet qui ne fournit aucun service Je ne sais pas ce qui est pratique. Je ne peux pas ressentir le sens de le faire.

Pour être clair, il est ** "non transmis" **. C ’est une interface, c’ est une classe abstraite. Vous vous apprenez à programmer pour expliquer un petit concept complexe Je ne peux pas dire quel est le profit. Je ne pense pas.

Par conséquent, si vous expliquez dans l'intention de donner une conférence à un tiers, du point de vue de l'autre partie ** Si vous ne donnez pas l'impression que "Oui, vous pouvez faire une chose aussi pratique" ** Il s'agit de la deuxième conférence au Japon. L'impression est profondément gravée dans ma mémoire.

Recommended Posts

Suite: La parabole de la POO (omise)
Le monde de Clara-Rules (2)
Jugement du calendrier
Le monde de Clara-Rules (4)
Le monde de Clara-Rules (1)
Le monde de Clara-Rules (3)
Le monde de Clara-Rules (5)
L'idée du tri rapide
L'idée de jQuery
À propos de la gestion de Null
Surveillance Docker-expliquant les bases des bases-
À propos de la description de Docker-compose.yml
Le jeu d'instancier java.lang.Void
Valeur médiane de trois valeurs
L'illusion de l'orientation objet