1- Factory Method

Factory Pattern

Factory pattern comprising: a simple factory, factory method, abstract factory model.

Simple Factory Factory Method Abstract Factory
product Selected by the parameter passed in the factory Created by the specific plant Created by the corresponding product family factory
Increase product Modify the factory method Increased factory implementation class and implementation class product All products increase factory implementation implementation class and lower class product family

Simple Factory

Here Insert Picture Description

Simple factory to select different products generated by the manufacture method of passing parameters.

Factory class

public class EasyFactory{
    public Product createProduct(int code){
        if(code==1) {
            return new Product1();
        } else if(code==2) {
            return new Product2();
        } else {
            return null;
        }
    }
}

Product categories

//产品抽象类
public abstract class Product{
    public abstract void process();//产品使用的方法
}
//产品实现类
class Product1 extends Product{
    @Override
    public void process() {
        System.out.print("产品1在执行");
    }
}
-------------------------------------
class Product2 extends Product{
    @Override
    public void process() {
        System.out.print("产品2在执行");
    }
}

Test category

public class Test {
    public static void main(String[] args) {
        EasyFactory easyFactory=new EasyFactory();
        Product product=easyFactory.createProduct(1);
        product.process();
    }
}

Factory Method

Factory method mode is selected by selecting the resulting product factory implementation class.

Factory class

//工厂抽象类
public abstract class VideoFactory{
    public abstract Video getvideo();
}
//工厂实现类
public class JavaVideoFactory extends VideoFactory{
    @Override
    public Video getvideo() {
        return new JavaVideo();
    }
}
-------------------------------------
public class PythonVideoFactory extends VideoFactory{
    @Override
    public Video getvideo() {
        return new PythonVideo();
    }
}

Product categories

//产品抽象类
public abstract class Video{
    public abstract void produce();
}
//产品实现类
public class JavaVideo extends Video{
    @Override
    public void produce() {
        System.out.println("java视频");
    }
}
------------------------------------
public class PythonVideo extends Video{
    @Override
    public void produce() {
        System.out.println("python视频");
    }
}

Test category

public class Test{
    public static void main(String[] args){
        VideoFactory videoFactory=new JavaVideoFactory();
        Video video=videoFactory.getvideo();
        video.produce();
    }
}

Abstract Factory

Selecting any product family specific product generated abstract factory method implemented by selecting specific class abstract factory (product family could conceivably brand).

Factory class

//工厂抽象类
public abstract class AbstractFactory {
    public abstract Book makeBook();
    public abstract Note makeNote();
}
//工厂实现类
public class TimFactory extends AbstractFactory {
    @Override
    public Book makeBook() { return new TimBook(); }
    @Override
    public Note makeNote() { return new TimNote(); }
}
--------------------------------------------
public class TomFactory extends AbstractFactory {
    @Override
    public Book makeBook() { return new TomBook(); }
    @Override
    public Note makeNote() { return new TomNote(); }
}

Product categories

//产品抽象类
public abstract class Book {
    public abstract void read();
}
------------------------------
public abstract class Note {
    public abstract void write();
}
//产品实现类
class TimBook extends Book {
    @Override
    public void read() {
        System.out.println("这是Tim品牌的书");
    }
}
class TomBook extends Book {
    @Override
    public void read() {
        System.out.println("这本书是tom品牌的");
    }
}
-------------------------------
class TimNote extends Note {
    @Override
    public void write() {
        System.out.println("这是Tim品牌的笔记本");
    }
}
class TomNote extends Note {
    @Override
    public void write() {
        System.out.println("这本笔记本是TOM品牌的");
    }
}

Test category

class Test {
    public static void main(String[] args) {
        AbstractFactory abstractFactory=new TomFactory();
        Book book=abstractFactory.makeBook();
        Note note=abstractFactory.makeNote();
        book.read();
        note.write();
    }
}
rgs) {
        AbstractFactory abstractFactory=new TomFactory();
        Book book=abstractFactory.makeBook();
        Note note=abstractFactory.makeNote();
        book.read();
        note.write();
    }
}
Published 27 original articles · won praise 1 · views 908

Guess you like

Origin blog.csdn.net/hu853996234/article/details/103003246