设计模式

1.工厂模式

原理:多态

案例:服装厂:生产服装

分析:需要一个服装厂类:工厂,类中具有生产服装的功能(创建服装对象)服装类(各种):一类服装是一个类需要一个各类服装的父类或接口:可以表示任意类服装

 

接口可以做为方法的返回类型吗? 

接口本身不可以做方法的返回值,只是接口被类实现之后,实现的类可以做为返回值,返回类型就写接口名,返回实现类的实例。



package com.judy.demo;

import java.util.Scanner;

public class FTest {
    public static void main(String[] args) {
        //创建一个工厂对象
        Factory f = new Factory();
        Scanner input = new Scanner(System.in);
        System.out.println("你要什么衣服");
        String kind = input.next();
        FuZhuang fz = f.make(kind);
        System.out.println(fz);
        check(fz);
    }

    //判断一个FuZhuang引用短袖是什么并调用方法
    public static void check(FuZhuang fz) {
        if (fz instanceof Tshirt) {  //判断fz是否是Tshirt 的一个实例。
            Tshirt t = (Tshirt) fz;  //fz已经是个实例了,为什么还要强制转换成 Tshirt??
            t.fun2();
        } else if (fz instanceof KuZi) {
            KuZi kz = (KuZi) fz;
            kz.fun1();
        } else {
            System.out.println("没有你要的衣服");
        }
    }
}

interface FuZhuang {
    //成员方法:
    public abstract void fun();
}

class KuZi implements FuZhuang {
    @Override
    public void fun() {
        // TODO Auto-generated method stub
        System.out.println("生产出一条裤子");
    }

    public void fun1() {
        System.out.println("这是一条裤子");
    }
}

class Tshirt implements FuZhuang {  //实现服装接口
    @Override
    public void fun() {
        // TODO Auto-generated method stub
        System.out.println("生产出一个短袖");
    }

    public void fun2() {
        System.out.println("这是一件短袖");
    }
}

class Factory {           //判断并生产什么衣服
    //判断逻辑方法
    public FuZhuang make(String kind) { //接口实现后 作为返回类型,返回接口的实现类
        if (kind.equals("短袖")) {
            return new Tshirt();  //返回实例
        } else if (kind.equals("裤子")) {
            return new KuZi();
        } else {
            return null;
        }

    }
}



 对象 instanceof 实例  判断实例是否是对象的实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值