méthode de fabrication la tête la première

0. Commander

Débutant Java, les objets sont fabriqués new, pour la réalisation de la programmation. Des exemples de cas d'une telle manière que l'objet est divulgué, mais entraînent également l' accouplement. Vous pouvez utiliser la méthode de l' usine pour résoudre.

//例子 在应用程序中需要实例化一只鸭子
Duck duck;//鸭子接口
if(是玩具鸭)
    duck= new 玩具鸭
if(是野鸭)
    duck=new 野鸭
if(是家养鸭)
    duck=new 家养鸭
    ...
 
 //可见针对实现编程的缺点 而且一旦发生变化,例如鸭子实现类的改变,那么就要去改动系统中涉及到这部分的代码。
 //实际上这部分 鸭子实例是变化的 而根据我们之前的原则,要取出变化的部分。并且 --开放闭合

À savoir, nous devons code pour instancier le paquet ou détaché de l'application, de sorte qu'ils ne nuisent pas à d'autres parties. Juste à l'intérieur de l'interface peut être réservée (polymorphes)

1. Méthode d'usine

Autrement dit, est de créer un objet appelé une usine locale, l'objet usine est de fournir une nouvelle utilisation pour le programme. ** Ainsi, il est encapsulé par la plante ** nouvelle partie de l'objet. Factory pour gérer les détails lors de la création d'un objet, qu'il est un canard de jouet ou colvert, à l'usine à traiter, et enfin revenir à un canard super classe. Si, dans l'avenir, nous devons augmenter la classe de canard, vous pouvez changer seulement doit être fait dans l'usine, non liée à la partie des références de classe canard.

//鸭子工厂
class DuckFactory{
	public	static Duck createDuck(String type){
			Duck duck=null;
			if(type=“玩具鸭”)
			duck=new 玩具鸭;
				....
			
			return duck;//工厂返回制造的对象
	}
//烤鸭子
class RoastDuck{
	DuckFactory factory;//工厂  组合的方式
	public RoastDuck(DuckFactory factory){
	this.factory=factory;
	}
	public Duck roast(String type){
		Duck duck=null;
		//之前的代码
		//if(type="玩具鸭")
		//	玩具鸭;
		
		//现在
		duck=factory.createDuck(type);//根据type 工厂制作一个鸭子
		...
	}
}
}
//注意:这是一个简单工厂

À mon avis , une méthode simple d'usine est relativement simple, le complexe est présent dans l'usine et de l' usine abstraite. Mode usine une usine ne peut produire un produit et fabrique abstraite peut produire plus . Par exemple usine de canard peut produire des boissons.

Définition: La méthode usine définit l'interface de l'objet pour créer une sous - classe de décider quelle classe instancier une méthode de fabrication permet à l'instanciation de classe différée aux sous - classes.

Pizzeria sur le livre combiné montre: une plante peut être multiple usine sous-classe, et ces sous-catégories de produits végétaux est leur propre décision. Par conséquent, le procédé de fabrication du produit doit sous-classe usine main.

Insérer ici l'image Description

Ici, Créateur et ConcreteCreator de mise en œuvre directe peuvent être découplés. Lors de l'utilisation du produit, le produit fabriqué en utilisant uniquement le polymorphisme peut Créateur, ne dépend pas de ConcreteCreator

A P134 P135 bonne explication

Principes: inversion de dépendance : à compter sur abstraite et ne repose pas sur des classes spécifiques.

Expliquez: Le magasin de pizza, par exemple, si la méthode pour la réalisation de programme, puis mettre la production de pizza à la boutique de pizza, puis suivre la pizzeria si vous souhaitez modifier le nombre de types de pizza, pizzeria vont modifier le code. Donc, ici, pizza pizzeria dépend de la classe spécifique. boutique Pizza est des composants de haut niveau, en fonction de la mise en œuvre. Si elles sont ajoutées en combinaison dans une classe d'usine pizzeria, qui est définie comme la classe des interfaces Pizza Pizza (polymorphisme), à ​​l'usine de production de pizzas, les modifications peuvent être séparés et pizza pizzeria.

Le soi-disant inversion: Avant composants de haut niveau se fondent sur de bas niveau, de bas niveau est maintenant dépendant de grande hauteur

Il y a inverti

Insérer ici l'image Description

après inversion
Insérer ici l'image Description

Quelques lignes directrices pour aider à suivre ce principe:

  • Variable n'est pas disponible pour contenir la référence spécifique à la classe: Si vous utilisez une nouvelle, pas que pour la réalisation du programme?
  • Ne laissez pas la classe est dérivée de classes spécifiques: à compter sur abstraite et polymorphes
  • Ne couvrez pas la méthode de classe de base a été mis en œuvre: Si la classe de base a atteint une couverture, puis la classe de base n'est pas vraiment adapté pour hérité abstrait. La méthode a été mise en œuvre dans la classe de base, elle doit être partagée par tous les sous-classes.
  1. Abstract Factory

    Abstract Factory est en fait une usine capable de produire plusieurs produits. La réalisation de ces produits dépend de l'usine de sous-classe.

    //原料抽象工厂
    public interface PizzaIngredientFactory {
        Dough createDough();//面团
        Sauce createSauce();//酱汁
        Cheese createCheese();
        Veggies[] createVeggies();
        Pepperoni createPepperoni();
        Clams createClam();
    }
    //子类工厂
    //子类来决定抽象原料的实现
    public class NYPizzaIngredientFactory implements PizzaIngredientFactory {
        @Override
        public Dough createDough() {
            return NY特色面团;
        }
    }
    

    En fait, chaque méthode abstraite usine semble être des méthodes d'usine. Chacune de ses méthodes sont abstraites, par les sous-classes pour remplacer ces méthodes. tâche abstraite est de définir une méthode de fabrication pour créer une interface responsable d'un groupe de produits, cette interface de chaque méthode sont responsables de la création d'un produit spécifique. Par la sous-classe usine abstraite pour réaliser des pratiques spécifiques.

Ce chapitre lu vers le bas, je trouve des méthodes d'usine avant je juste une méthode simple d'usine ... par exemple sur cette partie du contenu du livre et plus facile à comprendre, ici ne portent pas ...

résumé

  • usine simple

    A la classe usine à instancier un objet

    class SimplePizzaFactory{
        Pizza createPizza(type){
            Pizza pizza;
            if(type为奶酪)
                pizza=奶酪类型pizza;
            esle if
                ...
        }
    }
    
  • Méthode usine

    Parvenir à une relation définie entre les produits d'interface d'usine, de l'usine à la sous-classe qui implémente cette interface est héritée

    abstract class PizzaFactory{
        abstract Pizza createPizza(String type);//超类的接口
    }
    class NYPFactory extends PizzaFactory{
        Pizza createPizza(type){
            //生产出NY的pizza
        }
    }
    
  • Résumé Méthode usine

    méthode comparative usine, une seule méthode de production d'un -pizza de produits végétaux, le processus de fabrique abstraite pour la production de différents produits - sauce / pâte / assaisonnement / ...

    //抽象工厂--原料
    public interface PizzaIngredientFactory {
      Dough createDough();//面团
        Sauce createSauce();//酱汁
        Cheese createCheese();
        Veggies[] createVeggies();
        Pepperoni createPepperoni();
        Clams createClam();
    }
    //子类工厂
    class NYPizzaIngredientFactory implements PizzaIngredientFactory{
        //重写上述抽象工厂的方法
    }
    //那么最后就可以在Pizza产生的过程中使用NYPizzaIngredientFactory来控制原料的使用与生产
    
Publié neuf articles originaux · éloge de won 4 · Vues 4245

Je suppose que tu aimes

Origine blog.csdn.net/qq_42239081/article/details/104966014
conseillé
Classement