Дизайн паттерндер. 5-cабак. Құру паттерндері (Creational patterns)

Блог аты abzalkalimbetov
Аты: Factory Method
Проблема: Реализация жасалатын жерден объектілерді құру логикасын бөлу
Шешім: Объектіні құратын интерфейс жасау, және субкласта қай класты құруын шешетін логиканы жазу.
public interface Logger {
         public void log(String message);
}

public class ConsoleLogger implements Logger {
        public void log(String message) { 
            System.out.println("logging");
        }
}

public abstract class AbstractLoggerCreator {
        public abstract Logger createLogger();
        public Logger getLogger(){
           Logger logger = createLogger();
           return logger;
        }
    }

public class ConsoleLoggerCreator extends AbstractLoggerCreator{
    @Override
    public Logger createLogger() {
        ConsoleLogger logger = new ConsoleLogger();
        return logger;
        }
    }

public class Client {
    private void someMethodThatLogs(AbstractLoggerCreator logCreator){
        Logger logger = logCreator.createLogger();
        logger.log("message");
    }
    public static void main(String[] args){
        // Console Logger мысалында кез келген логгер (файлға лог не базаға) болуы мүмкін 
        AbstractLoggerCreator creator = new ConsoleLoggerCreator();
        Client client = new Client();
        client.someMethodThatLogs(creator);}}

Нәтиже: Factory method объектілерді құру логикасын өзіне алып, қолданушы жақ қандай объектілер құрылатыны жайлы білмейді. Код қайталанбайды және қайта қолданылады"

0 пікір

Тек қана тіркелген және авторизациядан өткен қолданушылар пікір қалдыра алады.