├── README.md ├── Cat.java ├── Dog.java ├── Work.java ├── GetWork.java ├── AnimalFactory.java ├── ManWorkImpl.java ├── BlackCatImpl.java ├── BlackDogImpl.java ├── WhiteCatImpl.java ├── WhiteDogImpl.java ├── ManGetWorkImpl.java ├── WomanWorkImpl.java ├── WomanGetWorkImpl.java ├── PersonBuilder.java ├── BlackAnimalFactoryImpl.java ├── WhiteAnimalFactoryImpl.java ├── PersonDirector.java ├── FactoryTest.java ├── AnimalTest.java ├── WomanBuilderImpl.java ├── Person.java └── ManBuilderImpl.java /README.md: -------------------------------------------------------------------------------- 1 | # JavaDesign 2 | 23中设计模式 3 | -------------------------------------------------------------------------------- /Cat.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:58 9 | * @Version: 1.0 10 | */ 11 | public interface Cat { 12 | void eat(); 13 | } 14 | -------------------------------------------------------------------------------- /Dog.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 11:02 9 | * @Version: 1.0 10 | */ 11 | public interface Dog { 12 | void eat(); 13 | } 14 | -------------------------------------------------------------------------------- /Work.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.FactoryMethod; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:35 9 | * @Version: 1.0 10 | */ 11 | public interface Work { 12 | void doWork(); 13 | } 14 | -------------------------------------------------------------------------------- /GetWork.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.FactoryMethod; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:37 9 | * @Version: 1.0 10 | */ 11 | public interface GetWork { 12 | Work getWork(); 13 | } 14 | -------------------------------------------------------------------------------- /AnimalFactory.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:55 9 | * @Version: 1.0 10 | */ 11 | public interface AnimalFactory { 12 | Cat createCat(); 13 | Dog createDog(); 14 | } 15 | -------------------------------------------------------------------------------- /ManWorkImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.FactoryMethod; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:36 9 | * @Version: 1.0 10 | */ 11 | public class ManWorkImpl implements Work { 12 | @Override 13 | public void doWork() { 14 | System.out.println("man"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /BlackCatImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 11:06 9 | * @Version: 1.0 10 | */ 11 | public class BlackCatImpl implements Cat { 12 | @Override 13 | public void eat() { 14 | System.out.println("黑猫吃东西"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /BlackDogImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 11:07 9 | * @Version: 1.0 10 | */ 11 | public class BlackDogImpl implements Dog { 12 | @Override 13 | public void eat() { 14 | System.out.println("黑狗吃东西"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WhiteCatImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 11:07 9 | * @Version: 1.0 10 | */ 11 | public class WhiteCatImpl implements Cat { 12 | @Override 13 | public void eat() { 14 | System.out.println("白猫吃东西"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WhiteDogImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 11:08 9 | * @Version: 1.0 10 | */ 11 | public class WhiteDogImpl implements Dog { 12 | @Override 13 | public void eat() { 14 | System.out.println("白狗吃东西"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ManGetWorkImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.FactoryMethod; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:37 9 | * @Version: 1.0 10 | */ 11 | public class ManGetWorkImpl implements GetWork { 12 | @Override 13 | public Work getWork() { 14 | return new ManWorkImpl(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WomanWorkImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.FactoryMethod; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:36 9 | * @Version: 1.0 10 | */ 11 | public class WomanWorkImpl implements Work { 12 | @Override 13 | public void doWork() { 14 | System.out.println("woman"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WomanGetWorkImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.FactoryMethod; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:39 9 | * @Version: 1.0 10 | */ 11 | public class WomanGetWorkImpl implements GetWork { 12 | @Override 13 | public Work getWork() { 14 | return new WomanWorkImpl(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /PersonBuilder.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.JavaDesign.builder; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: 制造人的接口 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 15:50 9 | * @Version: 1.0 10 | */ 11 | public interface PersonBuilder { 12 | void builderHead(); 13 | void builderBody(); 14 | void builderFoot(); 15 | Person builderPerson(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /BlackAnimalFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 11:05 9 | * @Version: 1.0 10 | */ 11 | public class BlackAnimalFactoryImpl implements AnimalFactory { 12 | @Override 13 | public Cat createCat() { 14 | return new BlackCatImpl(); 15 | } 16 | 17 | @Override 18 | public Dog createDog() { 19 | return new BlackDogImpl(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /WhiteAnimalFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 11:12 9 | * @Version: 1.0 10 | */ 11 | public class WhiteAnimalFactoryImpl implements AnimalFactory { 12 | @Override 13 | public Cat createCat() { 14 | return new WhiteCatImpl(); 15 | } 16 | 17 | @Override 18 | public Dog createDog() { 19 | return new WhiteDogImpl(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PersonDirector.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.JavaDesign.builder; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: 组装类 就是来执行刚才所有的造人动作,方法的参数是之前的接口。只要实现我们这个接口的类。就都可以 7 | * 作为参数。 8 | * @Author: 18070967 9 | * @CreateDate: 2018/10/20 15:55 10 | * @Version: 1.0 11 | */ 12 | public class PersonDirector { 13 | public Person constructPerson(PersonBuilder pb){ 14 | pb.builderBody(); 15 | pb.builderFoot(); 16 | pb.builderHead(); 17 | return pb.builderPerson(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /FactoryTest.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.FactoryMethod; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/19 15:39 9 | * @Version: 1.0 10 | */ 11 | public class FactoryTest { 12 | public static void main(String[] args) { 13 | GetWork manFactory = new ManGetWorkImpl(); 14 | manFactory.getWork().doWork(); 15 | GetWork womanFactory = new WomanGetWorkImpl(); 16 | womanFactory.getWork().doWork(); 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /AnimalTest.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.abstractFactory; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 11:17 9 | * @Version: 1.0 10 | */ 11 | public class AnimalTest { 12 | public static void main(String[] args) { 13 | AnimalFactory blackAnimalFactory = new BlackAnimalFactoryImpl(); 14 | Cat blackCat = blackAnimalFactory.createCat(); 15 | blackCat.eat(); 16 | Dog blackDog = blackAnimalFactory.createDog(); 17 | blackDog.eat(); 18 | 19 | AnimalFactory whiteAnimalFactory = new WhiteAnimalFactoryImpl(); 20 | Cat whileCat = whiteAnimalFactory.createCat(); 21 | whileCat.eat(); 22 | Dog whileDog = whiteAnimalFactory.createDog(); 23 | whileDog.eat(); 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /WomanBuilderImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.JavaDesign.builder; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: java类作用描述 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 16:27 9 | * @Version: 1.0 10 | */ 11 | public class WomanBuilderImpl implements PersonBuilder { 12 | Person person; 13 | 14 | public WomanBuilderImpl() { 15 | person = new Person(); 16 | } 17 | 18 | @Override 19 | public void builderHead() { 20 | person.setHead("语文课代表"); 21 | } 22 | 23 | @Override 24 | public void builderBody() { 25 | person.setBody("死胖子"); 26 | } 27 | 28 | @Override 29 | public void builderFoot() { 30 | person.setFoot("小脚"); 31 | } 32 | 33 | @Override 34 | public Person builderPerson() { 35 | return person; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Person.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.JavaDesign.builder; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: 实体类 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 15:48 9 | * @Version: 1.0 10 | */ 11 | public class Person { 12 | private String head; 13 | private String body; 14 | private String foot; 15 | 16 | public String getHead() { 17 | return head; 18 | } 19 | 20 | public void setHead(String head) { 21 | this.head = head; 22 | } 23 | 24 | public String getBody() { 25 | return body; 26 | } 27 | 28 | public void setBody(String body) { 29 | this.body = body; 30 | } 31 | 32 | public String getFoot() { 33 | return foot; 34 | } 35 | 36 | public void setFoot(String foot) { 37 | this.foot = foot; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ManBuilderImpl.java: -------------------------------------------------------------------------------- 1 | package com.suning.ics.JavaDesign.builder; 2 | 3 | /** 4 | * java类简单作用描述 5 | * 6 | * @Description: 实现造人的类,实现了造人的接口,new一个对象,然后在set对象。最后返回一个造好的man 7 | * @Author: 18070967 8 | * @CreateDate: 2018/10/20 15:51 9 | * @Version: 1.0 10 | */ 11 | public class ManBuilderImpl implements PersonBuilder { 12 | Person person; 13 | 14 | public ManBuilderImpl() { 15 | person = new Person(); 16 | } 17 | 18 | @Override 19 | public void builderHead() { 20 | person.setHead("创建男人的头"); 21 | } 22 | 23 | @Override 24 | public void builderBody() { 25 | person.setBody("创建男人的身体"); 26 | } 27 | 28 | @Override 29 | public void builderFoot() { 30 | person.setFoot("创建男人的脚"); 31 | } 32 | 33 | @Override 34 | public Person builderPerson() { 35 | return person; 36 | } 37 | } 38 | --------------------------------------------------------------------------------