设计模式代码实现(二)

观察者( 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 构建套票信息

 

 

这就是构建模式 使用,构建分成若干步,通过 步步构建信息,把 个复杂的对象构建出来。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值