黑马程序员技术交流社区

标题: 装饰设计模式 [打印本页]

作者: jiangkaizhuo    时间: 2016-4-15 23:26
标题: 装饰设计模式
装饰设计模式(☆☆☆☆):
                        用途:用来增强被装饰的类的功能
                        好处:对原有的功能进行增强,继承也可以做到。继承父类,并重写父类的方法,就可以对父类的方法进行加强,但是耦合性太强了
                                而装饰模式,可以在耦合性不强的前提下,加强被装饰的类的功能
                        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(".....");
                                }
                               
                        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2