girlfriend

你还在 new 对象吗?Java8 通用 Builder 了解一下?

青春壹個敷衍的年華 提交于 2020-02-20 10:56:28
程序员经常会遇到灵魂拷问:你有对象吗? 没有,但我可以 new 一个! public class GirlFriend { private String name ; private int age ; // 省略 getter & setter ... public static void main ( String [ ] args ) { GirlFriend myGirlFriend = new GirlFriend ( ) ; myGirlFriend . setName ( "小美" ) ; myGirlFriend . setAge ( 18 ) ; } } 没问题,老铁!但如果对象的属性太多,咋办? public class GirlFriend { private String name ; private int age ; private int bust ; private int waist ; private int hips ; private List < String > hobby ; private String birthday ; private String address ; private String mobile ; private String email ; private String hairColor ; private

设计模式 - 装饰模式和代理模式

情到浓时终转凉″ 提交于 2020-01-26 03:58:17
参考博客: https://www.cnblogs.com/doucheyard/p/5737366.html https://www.cnblogs.com/zhengbin/p/5618564.html 参考以上博客作出的小总结 写完下面的内容之后的总结 : 要区分装饰模式和代理模式, 不能只从代码结构上区分, 而更要从两个模式的 使用目的 和 使用方式 区分 比如装饰器模式的目的, 是为了增强代码 , 为了让装饰之前的类具有更多的功能. 在使用方式上, 装饰器可以一层一层叠加使用 而代理模式 是为了控制对被代理的对象的访问的同时能使用其功能, 使用方式上, 使用者是看不到被代理的对象的 一. 装饰模式 装饰模式没有被装饰类的控制权, 装饰类只是将被装饰类的功能拓展, 两个类都实现同一接口, 也就是装饰类可以装饰实现了这一接口的任何其他类 装饰器模式的特点就是, 我们常常将被装饰类作为参数传递进装饰器中, 如IO流的各种装饰器类 这里我们举个栗子: (1) 首先实现一个女孩接口, 她有一个特点就是漂亮 public interface Girl { void beauty(); } (2)然后你的女朋友实现了这个接口, 而且你女票长得很漂亮 public class GirlFriend implements Girl { @Override public void

细说智能指针

蓝咒 提交于 2019-11-26 01:07:32
提到指针,我们就会想到指针的高效,当然,滥用指针也会为我们带来许多的潜在bug。 提到指针,我们就会想到内存泄漏。比如,使用指针后忘记释放,久而久之,堆空间就会全部使用完,那么会带来很大的危害。再比如,两个指针指向同一片内存区域,我们对同一片区域进行了多次释放,同样会造成内存泄漏。 为了方便大家的理解,我们先来模拟一下,使用指针却忘记释放带来的危害。首先,我们要定义一个类。这次,还是定义女朋友类吧(之前写过一篇《细说C++的友元》用的就是女朋友类,这次还用这个吧,方便说明问题,更何况我们这群码畜怎么会有女朋友呢,没有女朋友只能自己创建了,哈哈哈哈)。 女生都喜欢自拍,尤其是漂亮的女生。所以,女生会有很多照片,对吧。那么,我们创建的这个女朋友类,就让她有照片吧。当然了,你女朋友的照片肯定不会随便给别人的吧,所以要把picutre这个变量声明为private类型。既然,女生喜欢自拍,并且发朋友圈,也就是说,其他人虽然得不到她的照片,却可以通过她的朋友圈看到她的自拍,也就意味着我们可以通过一个public函数访问picture这个变量。那么,我们现在来写代码。 class Girlfriend{ private: int pictures; public: Girlfriend ( int i ){ cout << "Girlfriend ( int i ) " << endl; /