Heim  >  Artikel  >  Java  >  Lernen von Java-Factory-Methodenmustern

Lernen von Java-Factory-Methodenmustern

黄舟
黄舟Original
2017-10-13 10:25:051487Durchsuche

In diesem Artikel wird hauptsächlich das Factory-Methodenmuster des Java-Designmusterlernens vorgestellt, das einen gewissen Referenzwert hat.

Factory-Methodenmuster: Definieren Sie einen Benutzer. Eine Schnittstelle zum Erstellen von Objekten, über die Unterklassen entscheiden können welche Klasse instanziiert werden soll. Factory-Methoden ermöglichen das Aufschieben der Instanziierung einer Klasse auf ihre Unterklassen.

Musterstrukturdiagramm der Fabrikmethode:

Projektanforderungen: Erstellen Sie eine Lei Feng-Fabrik, in der Studenten anderen helfen können und Freiwillige auch anderen dabei helfen können Dinge.

1: Erstellen Sie einen Lei-Feng-Kurs mit den Funktionen, anderen dabei zu helfen, den Boden zu fegen, Wäsche zu waschen und Reis zu kaufen.


package FactoryMethodModel;

public class LeiFeng {

 public void Sweep(){
  System.out.println("扫地");
 }
 
 public void Wash(){
  System.out.println("洗衣");
 }
 
 public void BuyRice(){
  System.out.println("买米");
 }
}

2: Erstellen Sie eine Klasse für Studenten, die von Lei Feng lernen, erben Sie die Lei Feng-Klasse und fügen Sie Ihre eigenen Funktionen hinzu.


package FactoryMethodModel;

/**
 * 学雷锋的大学生
 * @author 我不是张英俊
 *
 */
public class UniversityStudent extends LeiFeng {
//里面可以增加专属大学生的功能
}

3: Erstellen Sie eine Community-Freiwilligenklasse, die die Lei Feng-Klasse erbt.


package FactoryMethodModel;

/**
 * 学雷锋的社区人员
 * @author 我不是张英俊
 *
 */
public class Volunteer extends LeiFeng {

}

4: Erstellen Sie eine Lei Feng-Fabrikschnittstelle.


package FactoryMethodModel;

/**雷锋工厂的总接口。
 * @author 我不是张英俊
 *
 */
interface LeiFengFactory {
 LeiFeng CreatLenFeng();
}

5: Erstellen Sie eine Fabrik für Studenten, die von Lei Feng lernen.


package FactoryMethodModel;

/**
 * 学雷锋的大学生工厂
 * @author 我不是张英俊
 *
 */
public class UniversityStudentFactory implements LeiFengFactory {

 @Override
 public LeiFeng CreatLenFeng() {
  return new UniversityStudent();
 }

 
}

6: Erstellen Sie eine Freiwilligenfabrik, die von Lei Feng lernt.


package FactoryMethodModel;

/**
 * 学雷锋的社区制志愿者
 * @author 我不是张英俊
 *
 */
public class VolunteerFactory implements LeiFengFactory {

 @Override
 public LeiFeng CreatLenFeng() {
 // TODO Auto-generated method stub
 return new Volunteer();
 }

 
}

7: Testklasse


package FactoryMethodModel;

/**
 * 建立一个雷锋工厂,大学生可以以雷锋的名义起帮助别人,社区志愿者也可以。
 * 工厂化模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
 * 工厂方法使一个类的实例化延迟到其子类。
 * @author 我不是张英俊
 *
 */
public class Test {

 public static void main(String[] args) {
 
 LeiFengFactory factory=new UniversityStudentFactory();
 LeiFeng student =factory.CreatLenFeng();
 
 student.BuyRice();
 student.Sweep();
 student.Wash();
 }

}

8: Konsole

Kaufen Reis
Boden fegen
Wäsche waschen

Zusammenfassung: Die einfache Fabrikmethode verstößt gegen das Offen-Geschlossen-Prinzip, während die Fabrikmethode dieses Problem überwindet, wenn neue hinzugefügt werden müssen, wie z Grundschüler lernen von Lei Feng Wenn es soweit ist, fügen Sie einfach eine neue Fabrik für Grundschüler zur Fabrikmethode hinzu und rufen Sie sie dann in der Testklasse auf.

Das Factory-Methodenmuster behält auch den Vorteil der Kapselung des Objekterstellungsprozesses bei. Dadurch kann das Objekt ohne Änderungen ersetzt werden, wodurch die Kopplung zwischen dem Client-Programm und dem Produktobjekt verringert wird. Das Factory-Methodenmuster ist eine weitere Abstraktion und Weiterentwicklung des einfachen Factory-Musters. Aufgrund der Verwendung von Polymorphismus behält das Fabrikmuster die Vorteile des einfachen Fabrikmusters bei und überwindet dessen Nachteile. Der Nachteil besteht jedoch darin, dass ohne das Hinzufügen eines Produkts eine Fabrikklasse hinzugefügt werden muss, was den Umfang der zusätzlichen Entwicklung erhöht.

Das obige ist der detaillierte Inhalt vonLernen von Java-Factory-Methodenmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn