网站建设岗位有哪些,上海高端定制网站公司,为女人网上量体做衣网站,佛山网站排名Head First设计模式学习笔记
大家好#xff0c;我是微赚淘客系统3.0的小编#xff0c;是个冬天不穿秋裤#xff0c;天冷也要风度的程序猿#xff01;
一、策略模式
策略模式定义了算法族#xff0c;分别封装起来#xff0c;让它们之间可以互相替换#xff0c;此模式让…Head First设计模式学习笔记
大家好我是微赚淘客系统3.0的小编是个冬天不穿秋裤天冷也要风度的程序猿
一、策略模式
策略模式定义了算法族分别封装起来让它们之间可以互相替换此模式让算法的变化独立于使用算法的客户。
package cn.juwatech.strategy;interface QuackBehavior {void quack();
}class Quack implements QuackBehavior {public void quack() {System.out.println(Quack);}
}class Squeak implements QuackBehavior {public void quack() {System.out.println(Squeak);}
}abstract class Duck {QuackBehavior quackBehavior;public void performQuack() {quackBehavior.quack();}public void setQuackBehavior(QuackBehavior qb) {this.quackBehavior qb;}abstract void display();
}class MallardDuck extends Duck {public MallardDuck() {quackBehavior new Quack();}void display() {System.out.println(Im a Mallard Duck);}
}public class StrategyPatternDemo {public static void main(String[] args) {Duck mallard new MallardDuck();mallard.performQuack();mallard.setQuackBehavior(new Squeak());mallard.performQuack();}
}二、观察者模式
观察者模式定义了一种一对多的依赖关系让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时它的所有依赖者观察者都会收到通知并更新。
package cn.juwatech.observer;import java.util.ArrayList;
import java.util.List;interface Observer {void update(float temp, float humidity, float pressure);
}interface Subject {void registerObserver(Observer o);void removeObserver(Observer o);void notifyObservers();
}class WeatherData implements Subject {private ListObserver observers;private float temperature;private float humidity;private float pressure;public WeatherData() {observers new ArrayList();}public void registerObserver(Observer o) {observers.add(o);}public void removeObserver(Observer o) {observers.remove(o);}public void notifyObservers() {for (Observer observer : observers) {observer.update(temperature, humidity, pressure);}}public void measurementsChanged() {notifyObservers();}public void setMeasurements(float temperature, float humidity, float pressure) {this.temperature temperature;this.humidity humidity;this.pressure pressure;measurementsChanged();}
}class CurrentConditionsDisplay implements Observer {private float temperature;private float humidity;private Subject weatherData;public CurrentConditionsDisplay(Subject weatherData) {this.weatherData weatherData;weatherData.registerObserver(this);}public void update(float temp, float humidity, float pressure) {this.temperature temp;this.humidity humidity;display();}public void display() {System.out.println(Current conditions: temperature F degrees and humidity % humidity);}
}public class ObserverPatternDemo {public static void main(String[] args) {WeatherData weatherData new WeatherData();CurrentConditionsDisplay currentDisplay new CurrentConditionsDisplay(weatherData);weatherData.setMeasurements(80, 65, 30.4f);weatherData.setMeasurements(82, 70, 29.2f);}
}三、装饰者模式
装饰者模式动态地将责任附加到对象上。若要扩展功能装饰者提供了比继承更有弹性的替代方案。
package cn.juwatech.decorator;abstract class Beverage {String description Unknown Beverage;public String getDescription() {return description;}public abstract double cost();
}class Espresso extends Beverage {public Espresso() {description Espresso;}public double cost() {return 1.99;}
}abstract class CondimentDecorator extends Beverage {public abstract String getDescription();
}class Mocha extends CondimentDecorator {Beverage beverage;public Mocha(Beverage beverage) {this.beverage beverage;}public String getDescription() {return beverage.getDescription() , Mocha;}public double cost() {return .20 beverage.cost();}
}public class DecoratorPatternDemo {public static void main(String[] args) {Beverage beverage new Espresso();System.out.println(beverage.getDescription() $ beverage.cost());beverage new Mocha(beverage);System.out.println(beverage.getDescription() $ beverage.cost());}
}四、工厂模式
工厂模式通过定义一个创建对象的接口让子类决定实例化哪一个类。
package cn.juwatech.factory;abstract class Pizza {String name;void prepare() {System.out.println(Preparing name);}void bake() {System.out.println(Baking name);}void cut() {System.out.println(Cutting name);}void box() {System.out.println(Boxing name);}public String getName() {return name;}
}class CheesePizza extends Pizza {public CheesePizza() {name Cheese Pizza;}
}class GreekPizza extends Pizza {public GreekPizza() {name Greek Pizza;}
}abstract class PizzaStore {public Pizza orderPizza(String type) {Pizza pizza createPizza(type);pizza.prepare();pizza.bake();pizza.cut();pizza.box();return pizza;}protected abstract Pizza createPizza(String type);
}class SimplePizzaFactory extends PizzaStore {protected Pizza createPizza(String type) {Pizza pizza null;if (type.equals(cheese)) {pizza new CheesePizza();} else if (type.equals(greek)) {pizza new GreekPizza();}return pizza;}
}public class FactoryPatternDemo {public static void main(String[] args) {PizzaStore store new SimplePizzaFactory();Pizza pizza store.orderPizza(cheese);System.out.println(Ordered a pizza.getName() \n);pizza store.orderPizza(greek);System.out.println(Ordered a pizza.getName() \n);}
}本文著作权归聚娃科技微赚淘客系统开发者团队转载请注明出处