Como notificar uma classe quando eu alterar o valor de um atributo?

Olá pessoal,
dei uma olhada no forum e encontrei um padrão de projeto Observer. Dei uma lida sobre e entendi oque ele faz. Mais quando fui implementar sirgiu alguns problemas e dúvidas.

Tenho uma tela que possui 2 radioBtn, uma para pessoa fisica e outra para juridica, quando aciono o evento de escolha dos radiobtn eu altero um atributo da minha classe (da propria tela) ou seja, criei um atributo String tipoCliente, e consequentemente quando altero os radiobtn dependendo da escolha eu seto “fisico/juridico”.
Na minha tela como ela ja extende JFrame não posso extender Observable, oque eu fiz… Criei uma classe que extendeu Observable. E novamente criei outro atributo na minha classe da tela, do tipo “ClasseCriadaEntendendoObservable observador”. E tambem criei minha classe Controller que extende Observer e implementei o update() mais esta errado, Bom deve ter ficado confuso minha explicação, entao, segue o código.

Obs: em relação aos codigos dos meus métodos, sei que não é bom do jeit oque estou fazendo, mais estou começando agora a usar mvc seguindo um tutorial.

public class ObservadorJuridicaFisica extends Observable {
    private String tipoCliente;

    public String getTipoCliente() {
        return tipoCliente;
    }

    public void setTipoCliente(String tipoCliente) {
        this.tipoCliente = tipoCliente;
    }
}
//Tela
public class UICadastrarCliente extends javax.swing.JFrame {

    private ObservadorJuridicaFisica observador;
    private String tipoCliente;


   //Metodo de notificação
   private void rbtnCnpjItemStateChanged(ItemEvent evt) {
        this.txtCadastrarClienteCPFCNPJ.setEnabled(true);
        this.txtCadastrarClienteInscricaoEstadual.setEnabled(true);
        this.tipoCliente = "juridico";
        observador.notifyObservers(tipoCliente);
    }
public class ClienteController extends Observable implements Observer {
    private String tipoCliente;
    
    public void update(ObservadorJuridicaFisica o, Object obj) {
        this.tipoCliente = (String) o.getTipoCliente();
    }

    public List<Cliente> listaClientes(String tipoCliente) {
        ClienteDao cliDao  = null;
        
        try {
            if(tipoCliente.equals("fisico")) {
                cliDao = new FisicaDao();
                return cliDao.listarClientes();
            } else {
                cliDao = new JuridicaDao();
                return cliDao.listarClientes();
            }
        } catch (SQLException ex) {
            Logger.getLogger(ClienteController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
   }

Em fim, minha dúvida é, como eu notifico a minha classe controller sobre a alteração do atributo tipoCliente atraves do método de alteração de check do radiobtn?

Um outro conceito para linkar componentes swing com atributos de uma classe é a expecificação BeansBinding, se voce esta utilizando netbeans isso é feito pela propria IDE com algumas facilidades.

BeanBinding?
Do que se trata ?
Como eu faço isso no netbeans?

você pode criar um listener seu e dispará-lo no set do atributo… algo como:

public void setTipoCliente(String tipoCliente) { this.tipoCliente = tipoCliente; dispatchTipoClienteAlterado(...); }
e nesse dispatch você percorre os listeners avisando cada um deles

da uma procurada no google, BeansBinding é bem simples de utilizar com a IDE Netbeans ele mascara muita coisa e voce usa os componentes graficos, basicamente é voce amarrar determinado componente swing, por exemplo um JTextField com um atributo de objeto, quando vc for digitando valor nesse input o binding vai setando para o atributo do objeto

Obrigado, vou pesquisar