设计模式的总结二:创造型模式

来源:互联网 发布:淘宝如何办理发票 编辑:程序博客网 时间:2024/06/05 16:05

一:创造型模式分类

    1.子类别分类

      对象创造式模型:主要完成对象创建,病将对象中的部分内容放到其他对象中创建。(抽象工厂模式,生成器模式,原型模式,单例模式)

     类创造型模式:主要完成类实例化,并将类中的部分对象放到子类中创建。(工厂方法模式)

     2.创造型模型分类

        1)抽象工厂模式: 提供一个用于创建对象或相互依赖对象的接口,无需指定对象的具体类。

        2)生成器模式:      将复杂的对象构造与其表示相互分离,使得在相同的构建过程中可以创建不同的表示。

        3)工厂方法模式: 允许在子类中实现本类的实例化类。

        4)原型模式:        使用一个原型实例来制定创建对象的种类,然后通过拷贝这些原型实现新对象的创建。

        5)单例模式:确保某个类在系统中仅有一个实例,并提供一个访问他的全局访问点。

二:创造型模式的理解:

    1.工厂方法模式

       看名知意,类似工厂生产产品一样,创建实例对象。你提供一个类,通过工厂就能生产出这个类的对象来。

       模式主要包含这样几个类:

       产品类:       定义工厂方法中创建对象接口。

      具体产品类:实现产品类接口。

      工厂类:        声明工厂方法,返回一个产品类对象,可用于调用创建产品类对象的生成方法。

      具体工厂类:重写用于创建具体产品类对象的方法。

     2.应用场景:

       1)当需要创建一个类时,而在编辑时不能确定这个类的类型时(需要运行时确定)

       2)当一个类希望由其子类来指定所创建对象的具体类型时。

       3)当我们想要定位被创建类,病获取相关信息时。

     3.代码实现:

public interface Pet {    //产品类(实例化工厂方法模式的基类)    String getSound();}... ...public class Cat implements Pet {    //具体产品类(实例化工厂方法模式的派生类)    @Override    public String getSound() {        return "Meaw";    }}... ...public class Dog implements Pet {    //具体产品类(实例化工厂方法模式的派生类)    @Override    public String getSound() {        return "Bow";    }}... ...public class PetFactory {    //工厂方法模式实现,并展现对象创建逻辑    public Pet getPet(String sound){        Pet pet = null;        //工厂实例化对象的基本逻辑        if("Meaw".equals(sound)){            pet = new Cat();        }else if("Bow".equals(sound)){            pet = new Dog();        }        return pet;    }}... ...public class AbstractFactoryModel {    //使用工厂方法模式    public static void main(String[] args){        //创建工厂        PetFactory factory = new PetFactory();        //实例化一个对象        Pet pet1 = factory.getPet("Bow");        showSound(pet1.getSound());        //实例化一个对象        Pet pet2 = factory.getPet("Meaw");        showSound(pet2.getSound());    }    //你并不知道会创建那种对象    private static void showSound(String sound){        System.out.println("" + sound);    }}


0 0
原创粉丝点击