A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© jiangkaizhuo 中级黑马   /  2016-4-15 23:26  /  346 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

装饰设计模式(☆☆☆☆):
                        用途:用来增强被装饰的类的功能
                        好处:对原有的功能进行增强,继承也可以做到。继承父类,并重写父类的方法,就可以对父类的方法进行加强,但是耦合性太强了
                                而装饰模式,可以在耦合性不强的前提下,加强被装饰的类的功能
                        public class Demo6_Wrap {
                                /**
                                 * 装饰设计模式的好处是:
                                 * 耦合性不强,被装饰的类的变化与装饰类的变化无关
                                 */
                                public static void main(String[] args) {
                                        //装饰设计模式
                                        HeiMaStudent hms = new HeiMaStudent(new Student());
                                        hms.code();
                                       
                                        //装饰设计模式
                                        BufferedReader br = new BufferedReader(new FileReader("zzz.txt"));
                                        int c = br.read();
                                }

                        }
                        interface Coder {
                                public void code();
                        }
                       
                        class Student implements Coder {        //被装饰的类实现Coder接口
                       
                                @Override
                                public void code() {
                                        System.out.println("javase");
                                        System.out.println("javaweb");
                                }
                               
                        }
                       
                        class HeiMaStudent implements Coder {        //装饰类也要实现Coder接口
                                private Student s;                        //获取到被包装的类的引用
                                public ItcastStudent(Student s) {        //通过构造函数创建对象的时候,传入被包装的对象
                                        this.s = s;
                                }
                                @Override
                                public void code() {                        //对其原有功能进行升级
                                        s.code();
                                        System.out.println("数据库");
                                        System.out.println("ssh");
                                        System.out.println("安卓");
                                        System.out.println(".....");
                                }
                               
                        }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马