zoukankan      html  css  js  c++  java
  • 简单工厂模式

    客户端无需知道类名,只需了解参对应数。

    通过引入配置文件,无需修改客户端即可添加产品。

    工厂类集合了所有的逻辑,一旦不能正常工作,整个系统都受影响。

    系统扩展困难,一旦添加新产品久不得不修改工厂逻辑。

    违背了严格意义的开闭原则 添加一种产品需要更改工厂。

    抽象产品:

    1 public interface Freshwaterfish {
    2 void grow();//鱼在生长
    3 void harvest();//收获鱼
    4 }

    具体产品类:

     1 public class Carp implements Freshwaterfish {
     2 
     3     @Override
     4     public void grow() {
     5 System.out.println("鲤鱼在生长!");
     6     }
     7 
     8     @Override
     9     public void harvest() {
    10     System.out.println("收获鲤鱼!");
    11     }
    12 
    13 }
     1 public class Grasscrap implements Freshwaterfish {
     2 
     3     @Override
     4     public void grow() {
     5      System.out.println("草鱼在生长!");
     6     }
     7 
     8     @Override
     9     public void harvest() {
    10     System.out.println("收获草鱼!");    
    11     }
    12 
    13 }

    简单工厂类:

     1 public class Fishfarm {
     2 public static Freshwaterfish producefish(String type) {
     3     switch (type) {
     4     case "草鱼": return new Grasscrap();
     5     case "鲤鱼": return new Carp();
     6         
     7     default: System.out.println("本场不生产这种鱼");
     8               return null;
     9     }
    10 }
    11 }

    客户测试类:

     1 public class SimpleFactory {
     2 
     3     public static void main(String[] args) {
     4 Freshwaterfish mycarp = Fishfarm.producefish("鲤鱼");
     5 if (mycarp!=null) {
     6     mycarp.grow();
     7     mycarp.harvest();
     8 }
     9 Freshwaterfish mygrasscarp = Fishfarm.producefish("草鱼");
    10 if (mygrasscarp!=null) {
    11     mygrasscarp.grow();
    12     mygrasscarp.harvest();
    13 }
    14     }
    15 
    16 }
  • 相关阅读:
    java值类型和引用类型
    0513作业
    随机四位验证码
    1-36随机生成6个不重复的数
    java随机数
    0509作业
    作业0508
    字符集
    eclipse快捷键
    数据类型 转换
  • 原文地址:https://www.cnblogs.com/the-wang/p/7267370.html
Copyright © 2011-2022 走看看