zoukankan      html  css  js  c++  java
  • 设计模式抽象工厂方法模式

    类图

     

    源码

    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("女性");
        }
    
     
    }

    测试截图

     

  • 相关阅读:
    Java面向对象类与对象整理
    Java案例整理
    Java引用类型传递整理
    Java基础方法整理
    Java流程控制语句和数组整理
    Java流程语句
    Java运算符和引用数据类型(Scanner、Random)
    Java概念、语法和变量基础整理
    Mysql连接查询、子查询、联合查询 整理
    Mysql数据约束 整理
  • 原文地址:https://www.cnblogs.com/lx06/p/15688333.html
Copyright © 2011-2022 走看看