002.设计模式之工厂模式

来源:互联网 发布:js修改微信分享的内容 编辑:程序博客网 时间:2024/06/02 06:29

工厂模式:
概念:定义一个用于创建对象的接口,让子类决定实现哪一个类,工厂方法让创建实例延迟到其子类
要素:
1.工厂接口,工厂接口是工厂方法模式的核心,与调用者直接交互用来提供产品。
2.工厂实现,工厂实现决定如何实例化产品。
3.产品接口,产品接口的主要目的是定义产品的规范。
4.产品实现,实现产品的具体类,决定了产品在客户端中的具体行为。
优点:
1.使代码结构清晰,有效地封装变化。
2.对调用者屏蔽具体的产品类。
3.降低耦合度。
使用场景:
1.作为一种创建类模式,任何需要生成复杂对象的地方,都可以使用工厂模式。
2.当系统需要良好的拓展性

类结构:
类结构

工厂接口package com.shenghuoquaner.design.Factory;public interface AnimalMother {    public Animal giveBirth();}
工厂实现类package com.shenghuoquaner.design.Factory;public class CatMother implements AnimalMother {    @Override    public Animal giveBirth() {        Animal cat = new Cat();        cat.description();        return cat;    }}
工厂实现类package com.shenghuoquaner.design.Factory;public class DogMother implements AnimalMother {    @Override    public Animal giveBirth() {        Animal dog = new Dog();        dog.description();        return dog;    }}
实例接口package com.shenghuoquaner.design.Factory;public interface Animal {    void description();}
实例实现类package com.shenghuoquaner.design.Factory;public class Dog implements Animal {    @Override    public void description() {        System.out.println("小狗狗出生了!");    }}
实例实现类package com.shenghuoquaner.design.Factory;public class Cat implements Animal {    @Override    public void description() {        System.out.println("小猫猫出生了!");    }}
测试类package com.shenghuoquaner.design.Factory;public class Test {    public static void main(String[] args) {        AnimalMother dm = new DogMother();        dm.giveBirth();        AnimalMother cm = new CatMother();        cm.giveBirth();    }}
1 0