The factory method pattern _java Java design pattern

Source: Internet
Author: User

Profile

Design pattern is an art, if you really understand the art, you will find that the world will become more beautiful.

Defined

Defines an interface for creating an object, letting its subclasses decide which class to instantiate

Working with scenes

You can use Factory mode for any place where you use complex objects

Uml


1. Abstract Factory

Abstract Factory: We all know that factories, generally have only one function, that production, for example, Geely Automobile Factory, then make Geely Car, the iphone manufacturer made the iphone and so on
So can be summed up in a simple way, is create ();
2. Specific Automobile factory

Specific car manufacturers: the realization of the abstract factory, with the actual production of automotive processes and methods, etc.

3. Abstract car

Abstract Cars: Cars we generally know, can run, can play music, can navigate, can turn these are the characteristics of the car

4. Specific car

Abstract cars: Specific cars realize the abstract car, with all its functions, of course, different cars may have the same function

The simple introduction of the above, in general, the specific car manufacturers to make the corresponding cars, such as: Audi's factory, manufacturing Audi cars, Volkswagen's factories, manufacturing Volkswagen's car, etc.

Code Demo

We have clearly understood the relationship between them, so let's use the code to show our thoughts and logic in code:

(1) Abstract automobile Factory

Package com.zengtao.demo.factory;

/**
 * Abstract Factory * * Public abstract
class Carfactory {public

  abstract <t extends car> T Createcar (class& Lt T> CLA);

}

(2) Specific automobile factory

Package com.zengtao.demo.factory;

/**
 * Audi factory
/public class Audifactory extends Carfactory {

  @SuppressWarnings ("unchecked")
  @Override public
  <t extends car> T createcar (class<t> cla) {car car
    = null;
    try {car
      = (car) class.forname (Cla.getname ()). newinstance ();
    } catch (Exception e) {
      e.printstacktrace ();
    }
    Return (T) car;
  }



(3) Definition of the abstract car

Package com.zengtao.demo.factory;

Public abstract class Car {public

  abstract void Drive ();

  public abstract void selfnagive ();

  public abstract void Playmusic ();

}

(4) Specific car

(Audi Q3)

Package com.zengtao.demo.factory;

public class Audiq3car extends Audicar {

  @Override public
  Void Drive () {
    System.out.println ("Audiq3car has been made successful ");
    System.out.println ("Audiq3car Drive");
  }

  @Override public
  void Selfnagive () {
    System.out.println ("Audiq3car selfnagive");
  }

  @Override public
  void Playmusic () {
    System.out.println ("Audiq3car playmusic");
    System.out.println ("");
  }
}

(Audi Q5)

Package com.zengtao.demo.factory;

public class Audiq5car extends Audicar {

  @Override public
  Void Drive () {
    System.out.println ("Audiq5car has been made successful ");
    System.out.println ("Audiq5car Drive");
  }

  @Override public
  void Selfnagive () {
    System.out.println ("Audiq5car selfnagive");
  }

  @Override public
  void Playmusic () {
    System.out.println ("Audiq5car playmusic");
    System.out.println ("");
  }

}

(5) Call

Package Com.zengtao.demo;

Import com.zengtao.demo.factory.AudiFactory;
Import Com.zengtao.demo.factory.AudiQ3Car;
Import Com.zengtao.demo.factory.AudiQ5Car;

public class Main {public

  static void Main (string[] str) {

    //create factory
    audifactory audifactory = new Audifactory ( );

    The use of factory-made Q3 car
    audiq3car Audiq3car = Audifactory.createcar (audiq3car.class);
     The use of factory-made Q5 car
    audiq5car Audiq5car = Audifactory.createcar (audiq5car.class);

    Start driving music
    audiq3car.drive ();
    Audiq3car.playmusic ();

    Audiq5car.drive ();
    Audiq5car.playmusic ();

  }


(6) Results

Above all, the use of factory method model, the realization of the simple process of manufacturing automobiles

1th:

In the abstract factory we see that Createcar (Class cla) method, why do we define it, use the way of reflection to create a specific car, so that our different types of cars, only the corresponding conditions, not all can produce, so it is good to write, like many, Audi has Q3,Q5,A4,A6,A7,A8 and other series.

2nd:

If we have other cars, such as BMW, BMW x1,320,x5 and so on, we can also be very simple to achieve, only to implement the abstract factory, and then the specific car to implement the abstract cars, the expansion is also very convenient

Summarize

Abstract factory Here is almost the same, the factory method model is a relatively simple and very good design pattern

But there are also disadvantages, such as: if there are new types of cars, only to implement abstract factories and abstract cars, there are two new classes

But if it's not a car, it's a cell phone, so write it all over again, which will cause a lot of classes to appear, whether to adopt a factory approach or to decide on demand.

Note: We do not use the design model for the design, of course, the factory method model is also commonly used, such as: activity of the OnCreate method, we are based on their own definition of the XML layout, loading the corresponding interface and so on

The above is the entire content of this article, I hope to help you learn, but also hope that we support the cloud habitat community.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.