码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式那点事读书笔记(1)----工厂方法模式

时间:2016-08-07 18:40:08      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

工厂方法模式: 定义一个创建产品对象的工厂接口,让子类决定实例化哪种实例对象,将实际创建实例对象的工作推迟到子类当中,核心工厂类不再负责具体产品创建.

解决什么问题:

  当子类型可能会有很多,以后需要不断添加不同子类的实现.

  当一个系统尚在框架设计阶段,还不知道将来需要实例化那些具体类时.

  系统设计之初不需要具体对象的概念.

UML:

  技术分享     

代码结构:

  技术分享

代码:

  定义抽象产品:

package com.demo.factory.model;

/**
 * 定义抽象商品
 */
public abstract class AbstractSword {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

  定义实际商品:

package com.demo.factory.model.object;

import com.demo.factory.model.AbstractSword;

/**
 * 具体产品
 */
public class DragonSword extends AbstractSword {
    public DragonSword() {
        this.setName("龙刀");
    }
}

  定义抽象工厂:

package com.demo.factory.itf;

import com.demo.factory.model.AbstractSword;

/**
 * 定义的抽象产品
 */
public interface ISwordFactory {
    AbstractSword createSword();
}

  定义实际工厂:

package com.demo.factory;

import com.demo.factory.itf.ISwordFactory;
import com.demo.factory.model.AbstractSword;
import com.demo.factory.model.object.DragonSword;

/**
 * 定义具体工厂
 */
public class DragonSwordFactory implements ISwordFactory{
    @Override
    public AbstractSword createSword() {
        return new DragonSword();
    }
}

  实现工厂方法:

package main;

import com.demo.factory.DragonSwordFactory;
import com.demo.factory.itf.ISwordFactory;

/**
 * Main方法实现.
 */
public class MainApp {
    public static void main(String[] args) {
        ISwordFactory factory = new DragonSwordFactory();
        factory.createSword();

        System.out.println("生产龙刀");
    }
}

  

 

设计模式那点事读书笔记(1)----工厂方法模式

标签:

原文地址:http://www.cnblogs.com/arctique/p/5746776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!