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

    测试截图

     

  • 相关阅读:
    IIS与ASP.NET管道
    20个非常棒的jQuery倒计时脚本
    GitHub托管BootStrap资源汇总(持续更新中…)
    推荐13款优秀的Twitter Bootstrap JavaScript插件
    C#程序开发中经常遇到的10条实用的代码
    20款jQuery 的音频和视频插件
    给 C# 开发者的代码审查清单
    Bootstrap 3.0正式版发布!
    为你带来灵感的 20 个 HTML5/CSS3 模板
    通过一个模拟程序让你明白ASP.NET MVC是如何运行的
  • 原文地址:https://www.cnblogs.com/lx06/p/15688333.html
Copyright © 2011-2022 走看看