设计模式-工厂模式

工厂模式共分为到3类,分别是简单工厂模式、工厂方法模式和抽象工厂模式。

简单工厂模式是指原来由程序中创建对象改为由工厂创建对象,代码如下:

public interface Animal {
    public void sound();
}

public class Cat implements Animal {
    public Cat(){
        System.out.println("this is a Cat!");
    }
    @Override
    public void sound() {
        System.out.println("miao miao");
    }
}

public class Dog implements Animal {
    public Dog(){
        System.out.println("this is a Dog!");
    }
    @Override
    public void sound() {
        System.out.println("wang wang");
    }
}

public class AnimalFactory {
    public Animal create(String name){
        if("dog".equals(name)){
            return new Dog();
        }else if("cat".equals(name)){
            return new Cat();
        }else{
            return null;
        }
    }
}

工厂方法模式是指将提供一个创建对象的接口,让实现这个接口的类决定实例化哪一个对象,将对象的创建延迟到工厂的子类中进行。

//工厂接口
public interface AnimalFactory {
    public Animal create();
}

//工厂接口实现类1
public class CatFactory implements AnimalFactory {
    @Override
    public Animal create() {
        return new Cat();
    }
}

//工厂接口实现类2
public class DogFactory implements AnimalFactory {
    @Override
    public Animal create() {
        return new Dog();
    }
}

抽象工厂模式是指提供一个创建一系列相关或相互依赖对象的接口,无需指定他们具体的类。

public interface Fridge {
}

public class GeliFridge implements Fridge {
}

public class HaierFridge implements Fridge {
}


public interface AirConditioner {
}

public class GeliAirConditioner implements AirConditioner {
}

public class HaierAirConditioner implements AirConditioner {
    HaierAirConditioner(){
        System.out.println("this is HaierAirConditioner");
    }
}

public interface Factory {
    public Fridge createFridge();
    public AirConditioner createAirConditioner();
}

public class GeliFactory implements Factory {

    @Override
    public Fridge createFridge() {
        return new GeliFridge();
    }

    @Override
    public AirConditioner createAirConditioner() {
        return new GeliAirConditioner();
    }
}

public class HaierFactory implements Factory {

    @Override
    public Fridge createFridge() {
        return new HaierFridge();
    }

    @Override
    public AirConditioner createAirConditioner() {
        return new HaierAirConditioner();
    }
}

抽象工厂模式中涉及到产品族和产品等级结构两个概念,介绍如下:

产品族是指一系列相关的产品,如上述代码中介绍的冰箱和空调是两个产品族。

产品等级结构是指相同产品的不同制造方法,如代码中介绍的格力空调和海尔空调。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值