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

    测试截图

     

  • 相关阅读:
    LFS Linux From Scratch 笔记2(经验非教程)BLFS
    LFS Linux From Scratch 笔记(经验非教程)
    Using VNC on a debian/Ubuntu server with a OS X Mac
    Use weechat (IRC client) on OS X. MacBook Pro
    HC
    Vim 7.4.1952 with Python/Ruby/Lua/Perl/C Syntax built for Ubuntu 16.04 x86_64
    How to make workflow chart using several tools in Linux?
    STM32 串口 重定向
    有哪些大家不说,但需要知道的社会规则?
    如何理解 UL94HB , UL94-V0 , UL94-V1 , UL94-V2
  • 原文地址:https://www.cnblogs.com/lx06/p/15688333.html
Copyright © 2011-2022 走看看