设计模式

2021-01-30 工厂模式&&UML类图

2021-01-30  本文已影响0人  胖渣大橘子

UML类图1
UML类图2
UML类图3

1开放封闭原则

2简单工厂和工厂的对比

3工厂模式图

工厂.png
工厂原型图.png

4学雷锋简单工厂

class LeiFeng {
   public void Sweep() {
       System.out.println("扫地");
   }
   public void Wash() {
       System.out.println("洗衣");
   }
   public void CarryRice() {
       System.out.println("扛大米");
   }
   public void SayHello() {
       
   }
}
class Volunteer extends LeiFeng {
   public void SayHello() {
       System.out.println("志愿者学雷锋");   
   }
}
class Undergraduate extends LeiFeng {
   public void SayHello() {
       System.out.println("大学生学雷锋");   
   }
}
// 简单雷锋工厂
class SimpleFactory {
   public static LeiFeng CreateLeiFeng(String type) {
       LeiFeng result = null;
       switch (type) {
           case "学雷锋的大学生":
               result = new Undergraduate();
               break;
           case "社区志愿者":
               result = new Volunteer();
               break;
       }
       return result;
   }
}
public class LeiFengEgg {
   public static void main(String[] args) {
       LeiFeng person = SimpleFactory.CreateLeiFeng("学雷锋的大学生");
       person.SayHello();
       person.Wash();
       LeiFeng personB = SimpleFactory.CreateLeiFeng("社区志愿者");
       personB.SayHello();
       personB.CarryRice();
   }
}

5学雷锋工厂

interface IFactory {
    LeiFeng CreateLeiFeng();
}
class LeiFeng {
    public void Sweep() {
        System.out.println("扫地");
    }
    public void Wash() {
        System.out.println("洗衣服");
    }
    public void CarrayRice() {
        System.out.println("扛大米");
    } 
    public void SayHello() {
    } 
}
class Undergraduate extends LeiFeng {
    public void SayHello() {
        System.out.println("我是大学生,我来学雷锋");
    } 
}
class Volunteer extends LeiFeng {
    public void SayHello() {
        System.out.println("我是志愿者,我来学雷锋");
    } 
}
class UndergraduateFactory implements IFactory {
    public LeiFeng CreateLeiFeng() {
        return new Undergraduate();
    }
}
class VolunteerFactory implements IFactory {
    public LeiFeng CreateLeiFeng() {
        return new Volunteer();
    }
}
public class LeiFengF {
    public static void main(String[] args) {
        IFactory factory = new UndergraduateFactory();
        LeiFeng leifengA = factory.CreateLeiFeng();
        leifengA.SayHello();
        leifengA.CarrayRice();
        IFactory factoryB = new VolunteerFactory();
        LeiFeng leifengB = factoryB.CreateLeiFeng();
        leifengB.SayHello();
        leifengB.Wash();
    }
}
上一篇下一篇

猜你喜欢

热点阅读