Observer观察者模式

一、首先要理解观察者模式

  1、设计思想: 定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都得到通知并被自动更新(也可以选择性的更新某个它所依赖的对象)。

  2、观察者模式中主要有观察者和被观察者2个对象

    观察者(Observer):为那些在目标发生改变时需获得通知的对象定义个更新的接口,观察者可以有多个,实现了该接口的类都属于观察者

    被观察者(Observable):观察者所关注的目标,可以有任意多个观察者观察同一个目标

 

二、代码解释

  挺多人喜欢把MyOberable和MyOberver分开写,个人喜欢写在一起

public interface MyOberable {
 /*
  * 被观察者
  */
 public interface MyOberver {// 观察者,需要用到观察者模式的类需实现此接口
  // 具体观察者在得知被观察者状态改变时进行处理
  public void update(int what,Object... objs);

   //int what是用来选择性的通知某个观察这,去掉的话就是通知所有的观察者
 }

 public void attachObserver(MyOberver oberver);//注册观察者

 public void detachObserver(MyOberver oberver);//删除观察者

 public void notfilyObserver(int what,Object... objs);//通知观察者

 //int what是用来选择性的通知某个观察这,去掉的话就是通知所有的观察者

 public void detachObservers();//删除所有的观察者
}

 

import java.util.ArrayList;

/**
 * 具体被观察者并实现其抽象接口抽象被观察者
 * 
 **/

public class MyConcreteOberable implements MyOberable {
 // 定义一个List来封装观察者MyOberver
 private ArrayList<MyOberver> oberverlist = new ArrayList<MyOberver>();

 /**
  * Attach Observer (注册观察者) oberver必须不为空,不然会抛出NullPointerException
  * */
 @Override
 public void attachObserver(MyOberver oberver) {
  if (oberver == null)
   throw new NullPointerException();
  synchronized (oberverlist) {
   if (!oberverlist.contains(oberver)) {
    oberverlist.add(oberver);
   }
  }
 }

 /**
  * Detach Observer (删除观察者)
  * */
 @Override
 public synchronized void detachObserver(MyOberver oberver) {
  oberverlist.remove(oberver);
 }

 /**
  * 通知观察者数据发生变化
  * */
 @Override
 public void notfilyObserver(int what, Object... objs) {
  if (oberverlist != null) {
   for (MyOberver obser : oberverlist) {
    obser.update(what, objs);
   }
  }
 }

 @Override
 public void detachObservers() {
  oberverlist.clear();
  oberverlist = null;
 }

}

 

import android.os.Bundle;  

import android.app.Activity;  

import android.view.Menu;  

  

public class MainActivity extends Activity {  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

          

        //实现一个被观察者实例  

        MyConcreteOberable Oberable= new MyConcreteOberable();  

        //实例3个观察者对被观察者进行观察  

        MyOberver1 Oberver1= new MyOberver1(); //  MyOberver1实现了MyOberver

        MyOberver2 Oberver2= new MyOberver2(); //  MyOberver2实现了MyOberver

        //加入对其观察  

        Oberable.attachObserver(Oberver1);

        Oberable.attachObserver(Oberver2);

        //当被观察者发生变化时调用其信息方法  

        Oberable.notfilyObserver(1,"1表示选择通知Oberver1");

    }  

 

数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问题。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值