Шаблоны проектирования — Заводские шаблоны | Серия шаблонов проектирования (1)

задняя часть
Шаблоны проектирования — Заводские шаблоны | Серия шаблонов проектирования (1)

Это 30-й день моего участия в Gengwen Challenge.Подробности о мероприятии, пожалуйста, проверьте:Обновить вызов


Статьи по Теме

Серия шаблонов дизайна:Колонка шаблонов проектирования


Написать базовую бизнес-логику не сложно

Написание базовой бизнес-логики несложно.Для квалифицированного программиста это реальная способность писать код, который легко расширять, поддерживать, в высокой степени связный и с низким уровнем взаимозависимости. Итак, с сегодняшнего дня мы будем изучать шаблоны проектирования один за другим. Шаблоны проектирования предназначены не для языков программирования, а для мышления о программировании.


  • Самым простым шаблоном проектирования должен быть шаблон factory.В нашем корпоративном проекте шаблон factory и шаблон singleton также являются наиболее часто используемыми шаблонами. Сегодня мы кратко познакомим вас с фабричным паттерном. Это все личное резюме, не распыляйте, если вам это не нравится! ! !

описывать

  • Фабричный шаблон упрощает создание объектов. В обычных обстоятельствах мы создаем объекты с помощью new в Java, но для некоторых объектов могут потребоваться дополнительные операции, такие как установка некоторых значений по умолчанию. На этот раз, чтобы упростить работу пользователя, мы внедрили дизайнерскую идею фабричного шаблона. Фабричный шаблон должен инкапсулировать процесс создания объектов в фабричном классе.Мы можем получить объекты в конкретном фабричном классе через фабрику. Повышенная гибкость использования.

преимущество

  • Благодаря приведенному выше описанию мы можем легко обнаружить преимущества фабричного шаблона. С фабричным шаблоном нам не нужно обращать внимание на процесс создания объекта, когда мы строим объекты, объекты, которые нам нужны, нужно только попросить фабрику выдать инструкции для производства объектов. Откажитесь от сложного процесса построения и повысьте читаемость кода.

Реконструкция сцены

  • До наступления индустриальной эпохи наше производство было искусственным, иными словами, то, что нам было нужно, мы должны были делать сами. А после того, как у меня появился завод, я избавился от собственных рук. Например, вы теперь владелец швейной фабрики, когда наступит лето, вам нужно купить партию летней одежды. Я считаю, что вы не можете сделать одежду самостоятельно сейчас.Это все через обращение на швейную фабрику и сообщение швейной фабрике нужного вам фасона одежды.Через некоторое время вы получите указанную вами одежду. Вам совершенно не нужно заботиться о том, как сделана эта одежда. Швейная фабрика здесь - это фабрика нашей фабричной модели.

Классификация

  • Фабричный шаблон подразделяется на три типа: простой фабричный шаблон + фабричный шаблон метода + абстрактный фабричный шаблон.

  • Простой заводской узор: Простой заводской режим - это ситуация, которую мы воспроизвели в приведенном выше сценарии.Простая фабрика означает, что все детали выполняются одной фабрикой.В этом режиме давление фабрики особенно велико.

  • Шаблон заводского метода:
    Шаблон фабричного метода изменяет и оптимизирует фабрику на основе приведенного выше сценария. Раньше фабрика была фабрикой, которая производила одежду круглый год. Теперь класс фабрики абстрагирован. Есть четыре фабрики, которые являются конкретными классами реализации абстрактная фабрика Каждая фабрика отвечает за производство весенней, летней, осенней и зимней одежды. Это по-прежнему заводской режим, но относительно простой заводской режим ослабил нагрузку на завод.

  • Абстрактная фабрика

Шаблон абстрактной фабрики был усилен на основе шаблона абстрактного метода.В абстрактном методе класс реализации конкретной фабрики отвечает за производство одного типа одежды.В шаблоне абстрактной фабрики класс реализации конкретной фабрики может производить несколько категорий одежды. Это еще больше снизит нагрузку на швейную фабрику.

Код

Здесь мы реализуем код простого фабричного паттерна, а знание двух других паттернов укрепляем на основе простого фабричного паттерна.

Абстрактный класс одежды (Одежда)

package dingyingjun.JavaDesignDetails.工厂模式.features;

public abstract class Clothes
{
    //袖口的数量
    private int wristband=2;
    //领口的数量
    private int neckline=1;
    //穿衣方式
    public void hold()
    {
        System.out.println("我的穿衣方式是从领口");
    }
    public int getWristband()
    {
        return wristband;
    }
    public void setWristband(int wristband)
    {
        this.wristband = wristband;
    }
    public int getNeckline()
    {
        return neckline;
    }
    public void setNeckline(int neckline)
    {
        this.neckline = neckline;
    }
    
    
}

Специальная одежда первой категории (Осенняя ткань)

package dingyongjun.JavaDesignDetails.工厂模式.special;

import dingyongjun.JavaDesignDetails.工厂模式.features.Clothes;

public class AutumnCloth extends Clothes
{

    @Override
    public void hold()
    {
        System.out.println("我是秋装,我要倒着穿");
    }

}

Вторая категория специальной одежды (SpringCloth)

package dingyongjun.JavaDesignDetails.工厂模式.special;

import dingyongjun.JavaDesignDetails.工厂模式.features.Clothes;

public class SpringCloth extends Clothes
{

    @Override
    public void hold()
    {
        System.out.println("我是春装,我要从领口穿衣");
    }

}

Специальная одежда третьей категории (SummerCloth)

package dingyongjun.JavaDesignDetails.工厂模式.special;

import dingyongjun.JavaDesignDetails.工厂模式.features.Clothes;

public class SummerCloth extends Clothes
{

    @Override
    public void hold()
    {
        System.out.println("我是夏装,我要从怀口穿");
    }

}

Фабричный класс (Суконной фабрики)

package dingyongjun.JavaDesignDetails.工厂模式.简单工厂模式.factory;

import dingyongjun.JavaDesignDetails.工厂模式.features.Clothes;
import dingyongjun.JavaDesignDetails.工厂模式.special.AutumnCloth;
import dingyongjun.JavaDesignDetails.工厂模式.special.SpringCloth;
import dingyongjun.JavaDesignDetails.工厂模式.special.SummerCloth;

public class ClothFactory
{
    public static Clothes createClothes(String type) throws Exception
    {
        Clothes clothes=null;
        switch (type)
        {
        case "spring":
            clothes=new SpringCloth();
            break;
        case "summer":
            clothes=new SummerCloth();
            break;
        case "autumn":
            clothes=new AutumnCloth();
            break;
        default:
            throw new Exception("目前不支持你指定的类型");
        }
        return clothes;
    }
}

Звонок клиенту (клиент)

package dingyongjun.JavaDesignDetails.工厂模式.简单工厂模式.client;

import dingyongjun.JavaDesignDetails.工厂模式.features.Clothes;
import dingyongjun.JavaDesignDetails.工厂模式.简单工厂模式.factory.ClothFactory;

public class client
{
    public static void main(String[] args) throws Exception
    {
        System.out.println("工厂你给我一套春装");
        Clothes spring = ClothFactory.createClothes("spring");
        spring.hold();
        System.out.println("********************");
        System.out.println("工厂你给我一套秋装");
        Clothes autum = ClothFactory.createClothes("autumn");
        autum.hold();
        System.out.println("********************");
        System.out.println("工厂你给我一套夏装");
        Clothes summer = ClothFactory.createClothes("summer");
        summer.hold();
        System.out.println("********************");
    }
}

Показать результаты

这里写图片描述


Суммировать

  • Изучение шаблонов проектирования незаметно. Не спешите изучать шаблоны проектирования. Рост требует времени. Сегодняшние усилия окупятся в будущем.

Впереди долгий путь, и я обязательно буду его искать вдоль и поперёк~

Если вы думаете, что я блогеры хорошо пишу! Писать нелегко, пожалуйста, ставьте лайки, подписывайтесь и комментируйте, чтобы поощрять блоггеров ~ хахах