设计模式-1-工厂方法
2017-04-14 18:46
363 查看
参考:《设计模式那点事》
一、工厂方法模式
1-概述一:工厂方法模式 (1)创建产品对象的工厂接口 (2)子类对象决定实例化的具体对象;工厂不负责具体的对象创建 二:设计原则 (1)"开-闭" (2)依赖倒置 无论工厂或者产品依赖于抽象而非具体的实现类 三:场合 (1)子类可能很多,以后要不断增加不同的子类实现
package SheJiMoShiNaDianShi.Factory.itf; import SheJiMoShiNaDianShi.Factory.model.AbstractSword; /** * Created by hjw on 16/8/28. * 抽象工厂-生产抽象宝刀 */ public interface ISwordFactory { public AbstractSword creatSword(); } =================具体工厂1====================== package SheJiMoShiNaDianShi.Factory; import SheJiMoShiNaDianShi.Factory.itf.ISwordFactory; import SheJiMoShiNaDianShi.Factory.model.AbstractSword; import SheJiMoShiNaDianShi.Factory.model.object.QiXingSword; /** * Created by hjw on 16/8/28. * Caocao具体工厂-生产七星宝刀的工厂 */ public class Caocao implements ISwordFactory { @Override public AbstractSword creatSword() { return new QiXingSword(); } } ===================具体工厂2==================== package SheJiMoShiNaDianShi.Factory; import SheJiMoShiNaDianShi.Factory.itf.ISwordFactory; import SheJiMoShiNaDianShi.Factory.model.AbstractSword; import SheJiMoShiNaDianShi.Factory.model.object.BaXingSword; /** * Created by hjw on 16/8/28. */ public class Caocao2 implements ISwordFactory { @Override public AbstractSword creatSword() { return new BaXingSword(); } } =================抽象产品====================== package SheJiMoShiNaDianShi.Factory.model; /** * Created by hjw on 16/8/28. * 抽象的产品 */ public abstract class AbstractSword { //宝刀的名字 private String name; public AbstractSword(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ==================具体产品1========================== package SheJiMoShiNaDianShi.Factory.model.object; import SheJiMoShiNaDianShi.Factory.model.AbstractSword; /** * Created by hjw on 16/8/28. */ public class BaXingSword extends AbstractSword { public BaXingSword() { super("八星宝刀"); } } ==================具体产品2========================== package SheJiMoShiNaDianShi.Factory.model.object; import SheJiMoShiNaDianShi.Factory.model.AbstractSword; /** * Created by hjw on 16/8/28. * 七星宝刀-具体的产品 */ public class QiXingSword extends AbstractSword { public QiXingSword() { super("七星宝刀"); } } package SheJiMoShiNaDianShi.Factory; import SheJiMoShiNaDianShi.Factory.itf.ISwordFactory; import SheJiMoShiNaDianShi.Factory.model.AbstractSword; /** * Created by hjw on 16/8/28. */ public class MainApp { public static void main(String[] args) { ISwordFactory iSwordFactory = new Caocao(); AbstractSword abstractSword = iSwordFactory.creatSword(); System.out.println(abstractSword.getName()); iSwordFactory = new Caocao2(); abstractSword = iSwordFactory.creatSword(); System.out.println(abstractSword.getName()); } }
相关文章推荐
- GoF 23个经典的设计模式03--创建模式之工厂方法(未完代续)
- 设计模式--工厂方法
- 设计模式(三)、FACTORY METHOD(工厂方法)---对象创建型模式
- 设计模式学习笔记四:工厂方法(Factory Method)
- 每周一个设计模式之工厂方法与抽象工厂
- 设计模式之Factory1(简单工厂,工厂方法,抽象工厂的比较)
- 设计模式之工厂方法
- 设计模式 之 工厂方法
- C# 设计模式 之 工厂方法
- 设计模式(1)工厂方法 感觉没必要用工厂方法
- 设计模式杂谈:创建型模式之工厂方法(Factory Method)
- 设计模式--创建模式--工厂方法
- 设计模式示例一 Factory Method(工厂方法)
- 设计模式--工厂方法
- JAVA设计模式——工厂方法(Factory Method)模式
- 第二个设计模式:工厂方法
- 设计模式示例一 Factory Method(工厂方法)
- 设计模式 之 工厂方法
- 我把Black_Cat与Walaqi等关于"设计模式"之"工厂方法""抽象工厂"的讨论整理如下,以方
- 设计模式之工厂方法(FACTORY METHOD))(二)