• 设计模式抽象工厂方法模式


    类图

     

    源码

    package skinMan;
    
    public class Client {
        
        public static void main(String[] agrs) throws Exception {
            HumanFactory maleHumanFactory = new MaleFactory();
            HumanFactory femaleHumanFactory = new FemaleFactory();
            
            Human maleYellowHuman = maleHumanFactory.createYellowHuman();
            Human femaleYelloHuman = femaleHumanFactory.createYellowHuman();
            
            maleYellowHuman.getColor();
            maleYellowHuman.talk();
            maleYellowHuman.getSex();
            
            femaleYelloHuman.getColor();
            femaleYelloHuman.talk();
            femaleYelloHuman.getSex();
            
        }
     
    }
    2)    Human.java
    package skinMan;
    
    public interface Human {
        
        public void getColor();
        public void talk();
        public void getSex();
     
    }
    
    3)    HumanFactory.java
    package skinMan;
    
    public interface HumanFactory {
        
        public Human createYellowHuman();
        
        public Human createBlackHuman();
        
        public Human createWhiteHuman();
     
    }
    
    4)    AbstractBlackHuman.java
    package skinMan;
    
    public abstract class AbstractBlackHuman implements Human {
        
        public void talk() {
            
        }
        
        public void getColor() {
            
        }
     
    }
    
    5)    AbstractWhiteHuman.java
    package skinMan;
    
    public abstract class AbstractWhiteHuman implements Human {
         
        public void talk() {
            
            System.out.println("the white people speak english!");
            
        }
        
        public void getColor() {
            
            System.out.println("the white people skin is white!");
            
        }
    }
    
    6)    AbstractYellowHuman.java
    package skinMan;
    
    public abstract class AbstractYellowHuman implements Human{
         
        public void talk() {
            
        }
        
        public void getColor() {
            
        }
    }
    
    7)    MaleFactory.java
    package skinMan;
    
    public class MaleFactory implements HumanFactory{
         
        public Human createYellowHuman() {
            return new MaleYellowHuman();
        }
     
        public Human createBlackHuman() {
            return new MaleBlackHuman();
        }
     
        public Human createWhiteHuman() {
            return new MaleWhiteHuman();
        }
     
    }
    
    8)    MaleBlackHuman.java
    package skinMan;
    
    public class MaleBlackHuman implements Human {
    
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("黑色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("男性");
        }
    
    }
    
    9)    MaleWhiteHuman.java
    package skinMan;
    
    public class MaleWhiteHuman implements Human {
    
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("白色皮肤");
        }
    
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("男性");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
        }
    }
    
    10)    MaleYellowHuman.java
    package skinMan;
    
    public class MaleYellowHuman extends AbstractYellowHuman{
         
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("黄色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("男性");
        }
    
     
    }
    
    11)    FemaleFactory.java
    package skinMan;
    
    public class FemaleFactory implements HumanFactory{
         
        public Human createYellowHuman() {
            return new FemaleYellowHuman();
        }
     
        public Human createBlackHuman() {
            return new FemaleBlackHuman();
        }
     
        public Human createWhiteHuman() {
            return new FemaleWhiteHuman();
        }
     
    }
    
    12)    FemaleBlackHuman.java
    package skinMan;
    
    public class FemaleBlackHuman implements Human {
    
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("黑色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("女性");
        }
    
    }
    
    13)    FemaleWhiteHuman.java
    package skinMan;
    
    public class FemaleWhiteHuman implements Human {
    
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("白色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("女性");
        }
    
    }
    
    14)    FemaleYellowHuman.java
    package skinMan;
    
    public class FemaleYellowHuman extends AbstractYellowHuman{
         
        @Override
        public void getColor() {
            // TODO 自动生成的方法存根
            System.out.println("黄色皮肤");
        }
    
        @Override
        public void talk() {
            // TODO 自动生成的方法存根
    
        }
    
        @Override
        public void getSex() {
            // TODO 自动生成的方法存根
            System.out.println("女性");
        }
    
     
    }

    测试截图

     

  • 相关阅读:
    CXF入门案例
    计算python内部数据结构时间效率-源代码
    笨办法学习python-ex41源码加自己注释
    python之random模块
    python之模块、类、对象
    购物车代码
    ql的python学习之路-day1
    数组转置(函数指针,回调函数)
    将一句话按单词逆转
    *一个二级指针的练习(输入一个数,输出对应的月份)
  • 原文地址:https://www.cnblogs.com/lx06/p/15688333.html
Copyright © 2020-2023  润新知