观察者( Observer )模式
观察者模式又称为发布订阅模式,是对象的行为模式。观察者模式定义了 对多
的依赖关系,让多个观察者对象同时监视着被观察者的状态,当被观察者的状态发生变化
会通知所有观察者 并让其自动更新自己
ProductList
package Test2019616;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;public class ProductList extends Observable{
private List<String> productList = null ;///产品列表
private static ProductList instance; ///类唯 实例
private ProductList(){}
public static ProductList getInstance(){
if(instance == null ){
instance = new ProductList();
instance.productList = new ArrayList();
}
return instance;
}
//食增加观察者(电商接口)
public void addProductListObserver(Observer observer){
this.addObserver(observer);
}
//新增产品
public void addProduct(String newProduct){
productList.add(newProduct);
System.out.println ("产品列表新增了产品 "+ newProduct);
this.setChanged();////设置被观察对象发生变化
this.notifyObservers(newProduct); ////通知观察者,并传递新产品
}
}
JngDongObserver
package Test2019616;
import java.util.Observable;
import java.util.Observer;public class JngDongObserver implements Observer{
public void update(Observable o, Object product) {
// TODO Auto-generated method stub
String newProduct = (String) product;
System.out.println("发布新产品" + newProduct + "同步到京东商城");
}}
TaoBaoObserver
package Test2019616;
import java.util.Observable;
import java.util.Observer;public class TaoBaoObserver implements Observer{
public void update(Observable o, Object product) {
// TODO Auto-generated method stub
String newProduct = (String) product;
System.out.println("发布新产品" + newProduct + "同步到淘宝商城");
}
public static void main(String[] args) {
ProductList observable = ProductList.getInstance();
TaoBaoObserver taobaoObserver = new TaoBaoObserver();
JngDongObserver jindongObserver = new JngDongObserver();
observable.addObserver(taobaoObserver);
observable.addObserver(jindongObserver);
observable.addProduct("新增产品1");
}}
结果:
产品列表新增了产品 新增产品1
发布新产品新增产品1同步到京东商城
发布新产品新增产品1同步到淘宝商城
工厂模式和抽象工厂模式
Builder 模式实例
TicketHelper
package Test2019616;
public class TicketHelper {
public void buildAdult(String info ){
System.out.println("构建成年人逻辑" + info);
}
public void buildChildForSet(String info ){
System.out.println("构建有座 童票逻辑" + info);
}
public void buildChildNoSet(String info ){
System.out.println("构建无座儿童票逻辑:" + info);
}
public void buildOld(String info ){
System.out.println("构建有老年人票逻辑:" + info);
}
}
TicketBuilder
package Test2019616;
public class TicketBuilder {
public static Object builder(TicketHelper helper){
System.out.print("通过 TicketHelper 构建套票信息");
return null;
}
public static void main(String[] args) {
TicketHelper helper = new TicketHelper();
//TicketBulid bu = new TicketBulid();
helper.buildAdult("成人票");
helper.buildOld("老人票");
Object ticket = TicketBuilder.builder(helper);
}
}
结果:
构建成年人逻辑成人票
构建有老年人票逻辑:老人票
通过 TicketHelper 构建套票信息
这就是构建模式 使用,构建分成若干步,通过 步步构建信息,把 个复杂的对象构建出来。