java 设计模式中的三种工厂模式
2016-11-09 00:00
441 查看
摘要: 写些Java的设计模式吧
工厂模式在Java中分为三类:
1)简单工厂模式(Simple Factory)
2)工厂方法模式(Factory Method)
3)抽象工厂模式(Abstract Factory)
1)简单工厂模式(Simple Factory)
所有类交给工厂来创建。
1.抽象产品角色
2.工厂类角色
3.工厂类角色
测试:
执行结果:
制作一张黑桃J
2)工厂方法模式(Factory Method)
工厂方法模式使用继承自抽象工厂角色的多个子类来代替简单工厂模式中的“上帝类”,制作A到K的方法交给红桃,黑桃,方块,梅花类完成。
1.抽象方法:
2.分类后具体角色:
测试:
执行结果:制作一张方块A
3)抽象工厂模式(Abstract Factory)
不单纯制作扑克,同时增加制作麻将。在抽象工厂模式中,抽象产品 (AbstractProduct) 可能是一个或多个,从而构成一个或多个产品族(Product Family)。 在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。
1.抽象工厂:(选择制作扑克还是麻将)
2.具体工厂:
3.抽象方法:(如同工厂方法模式)
4.具体实现:(如同工厂方法模式)
测试:
执行结果:制作一张方块A。
工厂模式在Java中分为三类:
1)简单工厂模式(Simple Factory)
2)工厂方法模式(Factory Method)
3)抽象工厂模式(Abstract Factory)
1)简单工厂模式(Simple Factory)
所有类交给工厂来创建。
1.抽象产品角色
public abstract class Poker { //抽象方法 public abstract void SealCard(); }
2.工厂类角色
public class SpadeJ extends Poker{ //实现抽象方法 public void SealCard() { System.out.println("制作一张黑桃J"); } }
3.工厂类角色
public class SimpleFactory { public static Object getInstance(String className){ Object instance = null; try { //根据类名获取该类 Class cls = Class.forName(className); //获取该类实例 instance = cls.newInstance(); } catch (Exception e) { e.printStackTrace(); } return instance; } }
测试:
public class TestSF { public static void main(String[] args) { Poker p = (Poker)StaticFactory.getInstance(SpadeJ.class.getName()); p.SealCard(); } }
执行结果:
制作一张黑桃J
2)工厂方法模式(Factory Method)
工厂方法模式使用继承自抽象工厂角色的多个子类来代替简单工厂模式中的“上帝类”,制作A到K的方法交给红桃,黑桃,方块,梅花类完成。
1.抽象方法:
public interface Poker { //接口方法,制作A到K public void SealA(); public void Seal2(); public void Seal3(); public void Seal4(); public void Seal5(); public void Seal6(); public void Seal7(); public void Seal8(); public void Seal9(); public void Seal10(); public void SealJ(); public void SealQ(); public void SealK(); }
2.分类后具体角色:
public class Club implements Poker{ public void SealA() { System.out.println("制作一张方块A"); } public void Seal2() { System.out.println("制作一张方块2"); } public void Seal3() { System.out.println("制作一张方块3"); } public void Seal4() { System.out.println("制作一张方块4"); } public void Seal5() { System.out.println("制作一张方块5"); } public void Seal6() { System.out.println("制作一张方块6"); } public void Seal7() { System.out.println("制作一张方块7"); } public void Seal8() { System.out.println("制作一张方块8"); } public void Seal9() { System.out.println("制作一张方块9"); } public void Seal10() { System.out.println("制作一张方块10"); } public void SealJ() { System.out.println("制作一张方块J"); } public void SealQ() { System.out.println("制作一张方块Q"); } public void SealK() { System.out.println("制作一张方块K"); } }
测试:
public class TestFM { public static void main(String[] args) { Poker p = new Club(); p.SealA(); } }
执行结果:制作一张方块A
3)抽象工厂模式(Abstract Factory)
不单纯制作扑克,同时增加制作麻将。在抽象工厂模式中,抽象产品 (AbstractProduct) 可能是一个或多个,从而构成一个或多个产品族(Product Family)。 在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。
1.抽象工厂:(选择制作扑克还是麻将)
public interface BoardGames { public Poker createPoker(String pokerColors); public Mahjong createMahjong(String mahjongColors); }
2.具体工厂:
public class GetGameList implements BoardGames{ public Poker createPoker(String pokerColors) { Poker p = null; if(pokerColors.equals("Club")){ p = new Club(); }else if(pokerColors.equals("Spade")){ p = new Spade(); }else if(pokerColors.equals("Heart")){ p = new Heart(); }else if(pokerColors.equals("Diamond")){ p = new Diamond(); } return p; } public Mahjong createMahjong(String mahjongColors) { return new Mahjong(); } }
3.抽象方法:(如同工厂方法模式)
public interface Poker { //接口方法,卡上涂A到K public void SealA(); public void Seal2(); public void Seal3(); public void Seal4(); public void Seal5(); public void Seal6(); public void Seal7(); public void Seal8(); public void Seal9(); public void Seal10(); public void SealJ(); public void SealQ(); public void SealK(); }
4.具体实现:(如同工厂方法模式)
public class Club implements Poker{ public void SealA() { System.out.println("制作一张方块A"); } public void Seal2() { System.out.println("制作一张方块2"); } public void Seal3() { System.out.println("制作一张方块3"); } public void Seal4() { System.out.println("制作一张方块4"); } public void Seal5() { System.out.println("制作一张方块5"); } public void Seal6() { System.out.println("制作一张方块6"); } public void Seal7() { System.out.println("制作一张方块7"); } public void Seal8() { System.out.println("制作一张方块8"); } public void Seal9() { System.out.println("制作一张方块9"); } public void Seal10() { System.out.println("制作一张方块10"); } public void SealJ() { System.out.println("制作一张方块J"); } public void SealQ() { System.out.println("制作一张方块Q"); } public void SealK() { System.out.println("制作一张方块K"); } }
测试:
public class TestAF { public static void main(String[] args) { BoardGames bg = new GetGameList(); bg.createPoker("Club").SealA(); } }
执行结果:制作一张方块A。
相关文章推荐
- java设计模式---三种工厂模式之间的区别
- JAVA三种设计模式--------单例、工厂、代理模式
- java设计模式---三种工厂模式
- Java工厂模式的三种设计方式
- Java程序员从笨鸟到菜鸟之(三十二)大话设计模式(二)设计模式分类和三种工厂模式
- Java设计模式之三种工厂模式 -- 总是忘记,这次把你记下来!
- java设计模式---三种工厂模式
- java设计模式---三种工厂模式之间的区别
- Java-设计模式-三种工厂模式-比较区分
- Java 实现工厂设计模式的三种方式
- java设计模式---三种工厂模式
- Java程序员从笨鸟到菜鸟之(三十二)大话设计模式之设计模式分类和三种工厂模式
- java设计模式(二)设计模式分类和三种工厂模式
- Java程序员从笨鸟到菜鸟之(三十二)大话设计模式(二)设计模式分类和三种工厂模式
- Java程序员从笨鸟到菜鸟之(三十二)大话设计模式(二)设计模式分类和三种工厂模式
- 3.23种设计模式的Java版--Factory Method(工厂方法)
- Java设计模式之工厂方法模式
- 设计模式之一:Java中的简单工厂模式
- Java设计模式之工厂模式
- java设计模式【创建模式】之工厂模式