Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Примеры шаблонов проектирования

Все темы Java Developer

Приведите примеры основных шаблонов проектирования

Примеры основных шаблонов проектирования на Java:

  1. Singleton:

    public class Singleton {
        private static Singleton instance;
    
        private Singleton() {}
    
        public static synchronized Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
  2. Factory Method:

    public interface Product {
        void use();
    }
    
    public class ConcreteProduct implements Product {
        public void use() {
            System.out.println("Using ConcreteProduct");
        }
    }
    
    public abstract class Creator {
        public abstract Product factoryMethod();
    
        public void someOperation() {
            Product product = factoryMethod();
            product.use();
        }
    }
    
    public class ConcreteCreator extends Creator {
        public Product factoryMethod() {
            return new ConcreteProduct();
        }
    }
  3. Abstract Factory:

    public interface GUIFactory {
        Button createButton();
        Checkbox createCheckbox();
    }
    
    public class WinFactory implements GUIFactory {
        public Button createButton() {
            return new WinButton();
        }
        public Checkbox createCheckbox() {
            return new WinCheckbox();
        }
    }
    
    public class MacFactory implements GUIFactory {
        public Button createButton() {
            return new MacButton();
        }
        public Checkbox createCheckbox() {
            return new MacCheckbox();
        }
    }

Приведите примеры порождающих шаблонов проектирования

Примеры порождающих шаблонов проектирования на Java:

  1. Singleton:

    public class Singleton {
        private static Singleton instance;
    
        private Singleton() {}
    
        public static synchronized Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
  2. Factory Method:

    public interface Product {
        void use();
    }
    
    public class ConcreteProduct implements Product {
        public void use() {
            System.out.println("Using ConcreteProduct");
        }
    }
    
    public abstract class Creator {
        public abstract Product factoryMethod();
    
        public void someOperation() {
            Product product = factoryMethod();
            product.use();
        }
    }
    
    public class ConcreteCreator extends Creator {
        public Product factoryMethod() {
            return new ConcreteProduct();
        }
    }
  3. Abstract Factory:

    public interface GUIFactory {
        Button createButton();
        Checkbox createCheckbox();
    }
    
    public class WinFactory implements GUIFactory {
        public Button createButton() {
            return new WinButton();
        }
        public Checkbox createCheckbox() {
            return new WinCheckbox();
        }
    }
    
    public class MacFactory implements GUIFactory {
        public Button createButton() {
            return new MacButton();
        }
        public Checkbox createCheckbox() {
            return new MacCheckbox();
        }
    }
  4. Builder:

    public class Product {
        private String part1;
        private String part2;
    
        public void setPart1(String part1) {
            this.part1 = part1;
        }
    
        public void setPart2(String part2) {
            this.part2 = part2;
        }
    }
    
    public abstract class Builder {
        protected Product product = new Product();
    
        public abstract void buildPart1();
        public abstract void buildPart2();
    
        public Product getResult() {
            return product;
        }
    }
    
    public class ConcreteBuilder extends Builder {
        public void buildPart1() {
            product.setPart1("Part 1");
        }
    
        public void buildPart2() {
            product.setPart2("Part 2");
        }
    }
    
    public class Director {
        public void construct(Builder builder) {
            builder.buildPart1();
            builder.buildPart2();
        }
    }
  5. Prototype:

    public abstract class Prototype implements Cloneable {
        public Prototype clone() throws CloneNotSupportedException {
            return (Prototype) super.clone();
        }
    }
    
    public class ConcretePrototype extends Prototype {
        private String field;
    
        public void setField(String field) {
            this.field = field;
        }
    
        public String getField() {
            return field;
        }
    }

Приведите примеры структурных шаблонов проектирования

Примеры структурных шаблонов проектирования на Java:

  1. Adapter:

    public interface Target {
        void request();
    }
    
    public class Adaptee {
        public void specificRequest() {
            System.out.println("Specific request");
        }
    }
    
    public class Adapter implements Target {
        private Adaptee adaptee;
    
        public Adapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }
    
        public void request() {
            adaptee.specificRequest();
        }
    }
  2. Composite:

    public interface Component {
        void operation();
    }
    
    public class Leaf implements Component {
        public void operation() {
            System.out.println("Leaf operation");
        }
    }
    
    public class Composite implements Component {
        private List<Component> children = new ArrayList<>();
    
        public void add(Component component) {
            children.add(component);
        }
    
        public void remove(Component component) {
            children.remove(component);
        }
    
        public void operation() {
            for (Component child : children) {
                child.operation();
            }
        }
    }
  3. Decorator:

    public interface Component {
        void operation();
    }
    
    public class ConcreteComponent implements Component {
        public void operation() {
            System.out.println("ConcreteComponent operation");
        }
    }
    
    public class Decorator implements Component {
        protected Component component;
    
        public Decorator(Component component) {
            this.component = component;
        }
    
        public void operation() {
            component.operation();
        }
    }
    
    public class ConcreteDecorator extends Decorator {
        public ConcreteDecorator(Component component) {
            super(component);
        }
    
        public void operation() {
            super.operation();
            additionalOperation();
        }
    
        private void additionalOperation() {
            System.out.println("ConcreteDecorator additional operation");
        }
    }
  4. Facade:

    public class Subsystem1 {
        public void operation1() {
            System.out.println("Subsystem1 operation1");
        }
    }
    
    public class Subsystem2 {
        public void operation2() {
            System.out.println("Subsystem2 operation2");
        }
    }
    
    public class Facade {
        private Subsystem1 subsystem1 = new Subsystem1();
        private Subsystem2 subsystem2 = new Subsystem2();
    
        public void operation() {
            subsystem1.operation1();
            subsystem2.operation2();
        }
    }
  5. Proxy:

    public interface Subject {
        void request();
    }
    
    public class RealSubject implements Subject {
        public void request() {
            System.out.println("RealSubject request");
        }
    }
    
    public class Proxy implements Subject {
        private RealSubject realSubject;
    
        public void request() {
            if (realSubject == null) {
                realSubject = new RealSubject();
            }
            realSubject.request();
        }
    }

Приведите примеры поведенческих шаблонов проектирования

Примеры поведенческих шаблонов проектирования на Java:

  1. Observer:

    public interface Observer {
        void update(String state);
    }
    
    public class ConcreteObserver implements Observer {
        private String state;
    
        public void update(String state) {
            this.state = state;
            System.out.println("State updated to: " + state);
        }
    }
    
    public class Subject {
        private List<Observer> observers = new ArrayList<>();
        private String state;
    
        public void attach(Observer observer) {
            observers.add(observer);
        }
    
        public void detach(Observer observer) {
            observers.remove(observer);
        }
    
        public void notifyObservers() {
            for (Observer observer : observers) {
                observer.update(state);
            }
        }
    
        public void setState(String state) {
            this.state = state;
            notifyObservers();
        }
    }
  2. Strategy:

    public interface Strategy {
        void execute();
    }
    
    public class ConcreteStrategyA implements Strategy {
        public void execute() {
            System.out.println("Executing strategy A");
        }
    }
    
    public class ConcreteStrategyB implements Strategy {
        public void execute() {
            System.out.println("Executing strategy B");
        }
    }
    
    public class Context {
        private Strategy strategy;
    
        public void setStrategy(Strategy strategy) {
            this.strategy = strategy;
        }
    
        public void executeStrategy() {
            strategy.execute();
        }
    }
  3. Command:

    public interface Command {
        void execute();
    }
    
    public class ConcreteCommand implements Command {
        private Receiver receiver;
    
        public ConcreteCommand(Receiver receiver) {
            this.receiver = receiver;
        }
    
        public void execute() {
            receiver.action();
        }
    }
    
    public class Receiver {
        public void action() {
            System.out.println("Receiver action");
        }
    }
    
    public class Invoker {
        private Command command;
    
        public void setCommand(Command command) {
            this.command = command;
        }
    
        public void executeCommand() {
            command.execute();
        }
    }
  4. Iterator:

    public interface Iterator {
        boolean hasNext();
        Object next();
    }
    
    public class ConcreteIterator implements Iterator {
        private List<Object> items;
        private int position = 0;
    
        public ConcreteIterator(List<Object> items) {
            this.items = items;
        }
    
        public boolean hasNext() {
            return position < items.size();
        }
    
        public Object next() {
            return items.get(position++);
        }
    }
    
    public interface Aggregate {
        Iterator createIterator();
    }
    
    public class ConcreteAggregate implements Aggregate {
        private List<Object> items = new ArrayList<>();
    
        public void addItem(Object item) {
            items.add(item);
        }
    
        public Iterator createIterator() {
            return new ConcreteIterator(items);
        }
    }
  5. State:

    public interface State {
        void handle();
    }
    
    public class ConcreteStateA implements State {
        public void handle() {
            System.out.println("Handling state A");
        }
    }
    
    public class ConcreteStateB implements State {
        public void handle() {
            System.out.println("Handling state B");
        }
    }
    
    public class Context {
        private State state;
    
        public void setState(State state) {
            this.state = state;
        }
    
        public void request() {
            state.handle();
        }
    }

Эта страница была полезной?