您当前的位置: 首页 > 

梁云亮

暂无认证

  • 1浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

抽象工厂设计模式

梁云亮 发布时间:2019-10-15 16:09:51 ,浏览量:1

抽象工厂

特点:

  • 有多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
  • 有一个抽象工厂类,可以派生出多个具体工厂类。
  • 每个具体工厂类可以创建多个具体产品类的实例。
  • 抽象工厂模式的缺点是产生新的产品品种时,要改动的地方会太多。

在这里插入图片描述

产品接口
public interface Phone { //手机
    void call();
    void sms();
}
public interface KongTiao {  //空调
    void zhiLeng();
    void zhiRe();
}
产品类
  • 小米产品
public class XiaoMiPhone implements Phone { // 小米手机
    @Override
    public void call() {
        System.out.println("小米手机 打电话");
    }

    @Override
    public void sms() {
        System.out.println("小米手机 发短信");
    }
}
public class XiaoMiKongTiao implements KongTiao {  // 小米空调
    @Override
    public void zhiLeng() {
        System.out.println("小米空调 制冷");
    }

    @Override
    public void zhiRe() {
        System.out.println("小米空调 制热");
    }
}
  • 格力产品
public class GreeMiPhone implements Phone { //格力手机
    @Override
    public void call() {
        System.out.println("格力手机 打电话");
    }

    @Override
    public void sms() {
        System.out.println("格力手机 发短信");
    }
}
public class GreeKongTiao implements KongTiao { // 格力空调 
    @Override
    public void zhiLeng() {
        System.out.println("格力空调 制冷");
    }

    @Override
    public void zhiRe() {
        System.out.println("格力空调 制热");
    }
}
工厂接口
public interface Factory {
    Phone createPhone();
    KongTiao createKongTiao();
}
工厂类
  • 小米工厂
public class XiaoMiFactory implements Factory{ 
    @Override
    public Phone createPhone() { //生产手机
        return new XiaoMiPhone();
    }

    @Override
    public KongTiao createKongTiao() { //生产空调
        return new XiaoMiKongTiao();
    }
}
  • 格式工厂
public class GreeFactory implements Factory {
    @Override
    public Phone createPhone() { // 生产手机
        return new GreeMiPhone();
    }

    @Override
    public KongTiao createKongTiao() { // 生产空调 
        return new GreeKongTiao();
    }
}

## 测试代码

public static void main(String[] args) {
    Factory factory = null;
    factory = new XiaoMiFactory();
    // factory = new GreeFactory();
    Phone phone = factory.createPhone();
    phone.call();
    phone.sms();
    KongTiao kongTiao = factory.createKongTiao();
    kongTiao.zhiLeng();
    kongTiao.zhiRe();
}
程序运行结果:

在这里插入图片描述

关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0547s